C程序返回代码和&& bash的符号?(C program return codes

2019-06-26 15:05发布

在bash中,我们可以使用&&运算符执行两个指令。 例如:

./foo && ./bar

将首先执行foo ,且仅当foo是“成功的”,它会再执行bar 。 但是,当你考虑到C程序,按照惯例,返回0或这似乎违反直觉的exit(0)成功完成,这违背常理的行为时&&运营商。 (因为在大多数语言中,0被认为是一个“falsey”,因而将停止从执行第二条语句。)我在想什么?

Answer 1:

你不会错过任何。 你一定要记住, truefalse是不是在外壳的基本概念。 successfailure的。



Answer 2:

C语言约定,0是假,别的真的,就是这样,一个会议 。 巴什(和unix一般炮弹),使用相反的约定:0是真的,别的都是假的。

$ if ( exit 0 ); then echo true; else echo false; fi
true
$ if ( exit 1 ); then echo true; else echo false; fi
false
$ if ( exit 2 ); then echo true; else echo false; fi
false

正因为如此,在true命令总是为0的状态退出,而false出口为1的状态。

$ true; echo $?
0
$ false; echo $?
1

这可以是相当令人不安的人谁是用于对C约定,但它使很多更有意义的外壳而言,真理=成功=零个退出状态,而假的= =失败退出nonxero状态。



Answer 3:

你缺少一个bash的&&运营商正是如此定义:

命令1 && 命令2
如果命令2被执行,且仅当是command1返回零退出状态。



文章来源: C program return codes and && bash symbol?
标签: c bash shell unix