Dav*_*ove 9 documentation exit exit-status
我很难从 Bash 中找到完整的最新错误代码列表。例如:
$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4
Run Code Online (Sandbox Code Playgroud)
应该如何查找这样的退出代码?
jas*_*yan 12
有一些退出代码具有保留的特殊含义:
退出代码编号含义 1 Catchall 一般错误 2 滥用 shell 内置函数(根据 Bash 文档) 126 调用的命令无法执行 127“未找到命令” 128+n 致命错误信号“n” 130 脚本被 Ctrl-C 终止 255* 退出状态超出范围
低于 125 的所有内容对开发人员来说都是公平的游戏,并且实际上只能通过阅读应用程序页面或源代码来确定代码的含义(如果确实记录在案),正如l0b0 在他的回答中指出的那样man
一点)。
l0b*_*0b0 11
tl;dr退出代码是特定于应用程序的。
有一些松散的约定。false
并且在 POSIX shell 中任何以!
(如! true
)为前缀的成功都返回退出代码 1,但开发人员可以根据需要使用 0 到 255 之间的任何退出代码。最终,您必须查看其文档(在最好的情况下)或代码(在最坏的情况下)才能知道它的含义。对于带有man
页面的程序,退出代码通常会列在名为EXIT STATUS
(GNU 工具,如find
)的部分中。
一些流行的含义列在/usr/include/sysexits.h
- 我尽量使用它们。正如@AnsgarEsztermann 指出的那样,除了那些选择使用它的人(主要根据 ABS 的C/C++ 开发人员)之外,这些都不是 Bash 参考,甚至不是应用程序参考。