为什么0在shell中为true,但false为1?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (459)
false; echo $?

以上将输出1,这与我所知的所有其他编程语言相矛盾。

有什么理由呢?

提问于
用户回答回答于

Bash是一种编程(脚本)语言,但它也是一个shell和一个用户界面。如果0是错误,那么程序只能提供一种错误。

但是在Bash中,任何非零值都是错误,我们可能会使用1-255中的任何数字来表示错误。这意味着我们可能有许多不同的错误。1是一个普遍的错误,126意味着一个文件不能被执行,127意味着'找不到命令'等。这里是一个Bash 保留退出代码列表,显示一些最常见的退出代码。

还有很多种成功的(退出状态是0)。但是,成功将允许您继续下一步 - 您可以将结果打印到屏幕或执行命令等。

用户回答回答于

这是一个惯例,但是当你考虑它时,这是一个特别有用的惯例。一般来说,如果一个程序成功,那就是你所需要知道的。但是,如果它失败了,你可能需要知道关于失败的各种信息 - 为什么会发生,如何修复等等。毫无意义的“成功”和非零意味着失败让你可以很容易地检查成功,如果你愿意的话,可以调查特定的错误以获得更多细节。很多API和框架都有类似的约定 - 成功返回0的函数和那些失败的函数会返回描述特定故障情况的错误代码。

扫码关注云+社区

领取腾讯云代金券