shell组合退出状态——‘&&’ 与 ‘||’
本来不打算写这篇文章来着,毕竟怕大家笑,也怕大家误会我凑字数。
首先,这是我自己的博客,没必要凑字数的
,其次,就是这个组合退出状态并不像想象的那么简单,其内部妖藏巨细。
bash允许逻辑上组合退出状态,这样就可以一次测试多个内容。
其实,简单的说,这个组合退出状态就是语法 “&&” 与语法 “||”
不许笑,这俩玩意为啥被我说的如此耸人听闻。且看我一一道来(讲评书呢~)
statement1 && statement2 意思是“执行statement1,如果其退出状态为0,则执行statement2。
看下面的例子来说明一下:
then
...............................
fi
此脚本,先执行statement1,如果其返回0(根据上篇日志所讲,就是没有出错,没明白的同学去面壁),然后执行statement2。
如果statement2返回状态同样是0,就是同样没有出错,执行成功的话,执行then语句,否则退出。
这就说明在”&&”组合退出状态中,如果statement1运行失败,则脚本最后一个语句实际上是statement1,statement2根本没有执行的份。
statement1 || statement2 这个意思就很好理解了,执行statement1如果其退出状态非0,则执行statement2。
看完”and”总是会很好理解”or”的含义。
同样看例子:
then ........................
fi
此脚本说明哈,如果statement1成功则不执行statement2了,小样的让他蹲一辈子小黑屋(真邪恶。。)
所以需要注意的是,在“statement1 || statement2″中,如果statement1成功了,statement2是不会执行的,statement1是最后执行的语句。
如此解释之后,大家只需要记住,不要把和逻辑息息相关的判断写在组合退出条件的第二个语句里,因为你永远都不知道它是否会执行。。
PS:天真热,鼻子又出血了。(*^__^*) 嘻嘻……,不过出血就不用干活了。。
PPS:又落下了,not是取反操作,大家记一下哈。。
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/22/921/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
不看了,面壁去
[回复]
@bolo
呵呵。祝你早点回来。。
[回复]
if(a) b
愚见!
能写成
a && b;吧
或者
!a || b;
[回复]
@stri
应该是可以的,因为 && 和 || 的特性决定这样应该是OK的。
不过我不喜欢这样的写法,很郁闷,看着有些绕。呵呵。
[回复]