Documentation
如何查找應用程序的退出程式碼?
我很難從 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
完全)。