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