我对以下表达式的工作方式有些困惑。
cc file_name.c && ./a.out
当filename.c成功编译时,其存在状态将为0(零)。所以按照逻辑&;操作,第二个表达式(./a.out)假定不执行。但它仍然有效,给了我结果。它是如何工作的?
感谢
0
表示在shell中的成功。这与C中的不同。来自bash
手册页:
AND和OR列表是由&和││控制运算符。"与"one_answers"或"列表以左关联性执行。AND列表的形式为
命令1 & 命令2
当且仅当command1返回零的退出状态时,执行command2。
执行shell命令时,返回值为0表示命令执行成功。非零值表示处理命令时出错。因此,如果上一个命令成功,它将继续执行下一个命令,否则将中止。