如何尋找應用程式的退出代碼?

如何尋找應用程式的退出代碼?

我很難從 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)。

相關內容