我对以下表达式的工作方式有些困惑。
cc file_name.c && ./a.out
当 filename.c 编译成功时,其存在状态将为 0(零)。因此,根据逻辑 && 操作,第二个表达式( ./a.out )不应该被执行。但它仍然有效并给了我结果。这个怎么运作 ?
谢谢
0
在shell中意味着成功。它与 C 中的不同。从bash
手册页中:
AND 和 OR 列表分别是由&&和││控制运算符分隔的多个管道之一的序列。AND 和 OR 列表以左结合性执行。AND 列表具有以下形式
命令1 && 命令2
当且仅当command1返回退出状态为零时,才会执行command2 。
执行 shell 命令时,返回值为 0 表示命令执行成功。非零值表示处理命令时出错。因此,如果上一个命令成功,它将继续执行下一个命令,否则中止。