如何查找应用程序的退出代码?

如何查找应用程序的退出代码?

我很难从 Bash 中找到完整的最新错误代码列表。例如:

$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4

人们应该如何查找这样的退出代码?

答案1

有一些退出代码保留特殊含义:

退出代码 数字 含义
1 一般错误的总览
2 滥用 shell 内置函数(根据 Bash 文档)
126 调用的命令无法执行
127“找不到命令”
128+n 致命错误信号“n”
130 脚本被 Ctrl-C 终止
255* 退出状态超出范围

对于开发者来说,低于 125 的所有内容都是公平的游戏,并且实际上只能预测,因为l0b0 在他的回答中注明,通过阅读man应用程序的页面或源代码来确定代码的含义(如果确实有记录的话)。

答案2

太长了;博士退出代码是特定于应用程序的。

有一些松散的约定。 POSIX shell 中false任何以!(例如! true)为前缀的成功都会返回退出代码 1,但开发人员可以使用 0 到 255 之间的任何退出代码来实现他们想要的任何目的。最终你必须查看它的文档(在最好的情况下)或代码(在最坏的情况下)才能知道它的含义。对于具有页面退出代码的程序,通常会在名为(GNU 工具,例如)man的部分中列出。EXIT STATUSfind

一些流行的含义列在/usr/include/sysexits.h- 我尽可能地使用它们。作为@AnsgarEsztermann 指出,这些不是 Bash 参考,甚至不是应用程序参考,除非那些选择使用它的人(主要是 C/C++ 开发人员)根据ABS)。

相关内容