免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1742 | 回复: 2
打印 上一主题 下一主题

[系统管理] 小弟有个小问题,请大神@!@... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-23 08:32 |只看该作者 |倒序浏览
本帖最后由 369108033 于 2014-07-23 08:39 编辑

1、

运行结果:


2、


运行结果:


问题是:
为什么,if [ ! \($1 == 'q' -o $1 == 'Q' -o $1 == 'Quit' -o $1 == 'quit'\) ]; then ,运行出来都是“NO Quiting...”

为什么,if [ ! \($1 == 'q' -a $1 == 'Q' -a $1 == 'Quit' -a $1 == 'quit'\) ]; then ,运行出来都是“Unknown Argument”

可以说下它们的逻辑关系,if [ ! \($1 == 'q' -o $1 == 'Q' -o $1 == 'Quit' -o $1 == 'quit'\) ],加“!”号后,到底是变成什么样子?


我的理解是:

    脚本 里 -a是正则表达式的&& ,即全部条件成立才成立,只要第一个条件不成立后面的都不会执行,\( $1 =='q' -a $1 =='Q' -a $1 =='Quit' -a $1 == 'quit' \),你每次输入一个Q/Quit/q/quit,都只是符合其中一个条件,故这个语句值为假,然后!是当if [ !  **** ]后面的****为假时执行,即会直接输出“NOT Quiting....” 。
    但是,若输入的是“quitttt”是“Q/Quit/q/quit”以外的,那么输出的也应该是“NOT Quiting....”;
    可是,上面图片我运行的结果却是:“Unknown Argument”


    -o 是只要有一个条件成立,全部语句就成立,当你输入Q/Quit/q/quit时,if 里面的  \( $1 =='q' -o $1 =='Q' -o $1 =='Quit' -o $1 == 'quit' \) 就是为真,前面再加上一个!,就是 假,故此时执行else后面的语句,于是输出结果是Unknown Argument。
     这也是,图片运行的结果也是“NOT Quiting....”,反过来了;

请问,是我理解出问题了吗

论坛徽章:
12
技术图书徽章
日期:2014-07-11 16:27:5215-16赛季CBA联赛之山西
日期:2016-01-08 16:10:11操作系统版块每日发帖之星
日期:2015-08-01 06:20:002015亚冠之武里南联
日期:2015-06-11 01:12:162015年亚洲杯之阿联酋
日期:2015-03-20 11:41:462015年亚洲杯纪念徽章
日期:2015-03-18 18:08:422015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-10 22:23:32天秤座
日期:2014-08-20 15:53:35水瓶座
日期:2014-08-11 12:08:51午马
日期:2014-07-23 23:03:38IT运维版块每日发帖之星
日期:2016-02-18 06:20:00
2 [报告]
发表于 2014-07-23 08:52 |只看该作者
回复 1# 369108033


    你理解没有问题,请把你的语句

  1. if [ ! \($1 == 'q' -o $1 == 'Q' -o $1 == 'Quit' -o $1 == 'quit'\) ]; then
  2. 改成
  3. if [ ! \( $1 == 'q' -o $1 == 'Q' -o $1 == 'Quit' -o $1 == 'quit' \) ]; then


  4. 以及从
  5. if [ ! \($1 == 'q' -a $1 == 'Q' -a $1 == 'Quit' -a $1 == 'quit'\) ]; then
  6. 改成
  7. if [ ! \( $1 == 'q' -a $1 == 'Q' -a $1 == 'Quit' -a $1 == 'quit' \) ]; then
复制代码
试试看。如果你看出了区别,那么你应该会得到想要的结果。

论坛徽章:
0
3 [报告]
发表于 2014-07-23 09:20 |只看该作者
原来是空格问题,晕,感谢 回复 2# phanx


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP