0

我对以下表达式的工作方式有些困惑。

cc file_name.c  && ./a.out 

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

谢谢

4

2 回答 2

2

0在shell中意味着成功。它与 C 中的不同。从bash手册页中:

AND 和 OR 列表分别是由&&││控制运算符分隔的多个管道之一的序列。AND 和 OR 列表以左结合性执行。AND 列表具有以下形式

命令1 && 命令2

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

于 2012-07-26T05:32:19.480 回答
1

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

于 2012-07-26T05:34:30.243 回答