红联Linux门户
Linux帮助

问个关于&&和||的问题

发布时间:2009-04-02 10:47:56来源:红联作者:henryhj
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的么,好混乱
文章评论

共有 2 条评论

  1. cwqing1973 于 2009-04-02 16:56:37发表:

    这都是一些关于编程方面的知识,与或非而已,但是想编程,一定要把它们三足弟学习精才行!!!!!

  2. wang7131984 于 2009-04-02 13:43:00发表:

    &&和||都是短路运算,只有当前面的表达式能够确定整个表达式的结果时,才不会计算后面的表达式。
    x1||x2
    如果x1为真将不会执行x2
    如果x1为假将必会执行x2

    很显然无论是否unset A前面的表达式都是假,所以肯定会输出||后面的