我在下面的表达式工作中存在一些困惑。逻辑与运算中的混淆
cc file_name.c && ./a.out
当filename.c编译成功时,其存在状态将为0(零)。 因此按照逻辑& &操作,第二个表达式(./a.out)不会被执行。 但它仍然有效,并给我结果。怎么运行的 ?
感谢
我在下面的表达式工作中存在一些困惑。逻辑与运算中的混淆
cc file_name.c && ./a.out
当filename.c编译成功时,其存在状态将为0(零)。 因此按照逻辑& &操作,第二个表达式(./a.out)不会被执行。 但它仍然有效,并给我结果。怎么运行的 ?
感谢
0
意味着在壳成功。它不是相同C.从bash
man page:
AND和OR列表是由& &和││控制操作员,分别分离多个管道中的一个的序列。 AND和OR列表以左结合执行。一个AND序列的形式是
命令1& &命令2,如果
命令2执行,且仅当命令1返回零退出状态。
执行shell命令时,返回值为0表示命令已成功执行。非零值意味着处理命令时出错。所以,如果先前的命令是成功的,它将继续执行下一个命令,否则中止。