Documentation

如何查找應用程序的退出程式碼?

  • November 16, 2014

我很難從 Bash 中找到全面的最新錯誤程式碼列表。例如:

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

應該如何查找這樣的退出程式碼?

tl; dr退出程式碼是特定於應用程序的。

有一些鬆散的約定。在 POSIX shell 中任何以(like )false為前綴的成功都返回退出程式碼 1,但開發人員可以使用 0 到 255 之間的任何退出程式碼來滿足他們的需要。最終,您必須查看它的文件(在最好的情況下)或程式碼(在最壞的情況下)才能知道它的含義。對於帶有頁面退出程式碼的程序,通常會在名為(GNU 工具,如)的部分中列出。!``! true``man``EXIT STATUS``find

中列出了一些流行的含義/usr/include/sysexits.h-我盡可能使用它們。正如@AnsgarEsztermann 指出的那樣,這些不是 Bash 參考,甚至不是應用程序參考,除非選擇使用它的人(C/C++ 開發人員主要根據 ABS)。

有一些具有保留特殊含義的退出程式碼:

退出程式碼 編號 含義
1 擷取一般錯誤
2 濫用 shell 內置函式(根據 Bash 文件)
126 呼叫的命令無法執行
127“找不到命令”
128+n 致命錯誤信號“n”
130 腳本被 Ctrl-C 終止
255* 退出狀態超出範圍

低於 125 的所有內容對開發人員來說都是公平的遊戲,並且真的只能通過閱讀應用程序頁面或原始碼來判斷程式碼的含義(如果確實有文件說明man完全)。

引用自:https://unix.stackexchange.com/questions/162677