不同的 BASH 退出状态码

Posted

技术标签:

【中文标题】不同的 BASH 退出状态码【英文标题】:Different BASH exit status codes 【发布时间】:2013-10-01 20:11:12 【问题描述】:

我正在用 C 语言为 x86 Linux 编写程序。当程序未按预期执行时,我想使用我自己的客户退出代码来帮助用户解决调试问题。

例如,假设程序是一个命令行计算器,我想返回以下退出代码并在手册页中记录它们;

    计算完成并将结果打印到屏幕(正常操作) - 返回 0 提供的操作数数量无效(基本上是语法错误!) - 返回 1 其他一些错误 - 返回 2 另一个错误 - 返回 3

我看过一些像this one 这样的页面,这让我觉得我无法返回任何我喜欢的退出代码。除了 0 == 正常退出之外,我应该在这里遵循任何官方规则(BASH 或 Linux 标准/指南)吗?

【问题讨论】:

最大的限制是 $? (返回代码)不能大于 255。其他任何事情都由您决定,只要您记录返回值和标记的错误,就不会有任何问题。好的链接,最好遵守这些限制。祝你好运。 退出代码是操作系统的一个特性,而不是任何特定的外壳。 【参考方案1】:

您可以返回任何您喜欢的完整退出代码。您引用的 BASH 脚本指南页面只是说在调试由于某些其他原因返回众所周知的代码的内容时可能会造成混淆。

该页面还提到 /usr/include/sysexits.h 试图将 C 程序员的退出代码系统化。

【讨论】:

感谢指向/usr/include/sysexits.h的指针我不知道这个!

以上是关于不同的 BASH 退出状态码的主要内容,如果未能解决你的问题,请参考以下文章

谢烟客---------Linux之Bash基础特性条件测试&&自定义退出状态码

$?:退出状态和退出状态码

程序退出状态码

CalledProcessError 退出状态码 5

Linux Bash-脚本基础

bash Shell 总结《二》