逻辑AND操作中的混乱

时间:2012-07-26 05:30:02

标签: linux operators cc

我对以下表达式如何工作有些困惑。

cc file_name.c  && ./a.out 

当filename.c成功编译时,其存在状态将为0(零)。 所以按照逻辑和&&操作,第二个表达式(./a.out)不应该被执行。 但它仍然有效,并给我结果。这个怎么运作 ?

谢谢

2 个答案:

答案 0 :(得分:2)

0表示在shell中取得成功。它与C中的不同。来自bash man page

  

AND和OR列表分别是由&& ││控制运算符分隔的一个或多个管道的序列。 AND和OR列表以左关联性执行。 AND列表的格式为

     

command1 && command2

     当且仅当 command1 返回退出状态为零时,才会执行

command2

答案 1 :(得分:1)

执行shell命令时,返回值为0表示命令已成功执行。非零值表示处理命令时出错。因此,如果上一个命令成功,它将继续执行下一个命令,否则中止。