shell 13问上面一个例子,确实不太明白[code]$ A=123
$ [ -n "$A" ] && [ "$A" -lt 100 ] || echo 'too big!'
too big![/code]然后[code]$ unset A
$ [ -n "$A" ] && [ "$A" -lt 100 ] || echo 'too big!'
too big!
[/code]按理说,第二个例子,A已经被unset掉了,那么[code][ -n "$A" ][/code]的返回值为非0,[code][ "$A" -lt 100 ][/code]这句不会执行,那么难道是[code][ -n "$A" ][/code]的返回值导致echo的么,好混乱


cwqing1973 于 2009-04-02 16:56:37发表:
这都是一些关于编程方面的知识,与或非而已,但是想编程,一定要把它们三足弟学习精才行!!!!!
wang7131984 于 2009-04-02 13:43:00发表:
&&和||都是短路运算,只有当前面的表达式能够确定整个表达式的结果时,才不会计算后面的表达式。
x1||x2
如果x1为真将不会执行x2
如果x1为假将必会执行x2
很显然无论是否unset A前面的表达式都是假,所以肯定会输出||后面的