アプリケーションの終了コードを見つける方法は?

アプリケーションの終了コードを見つける方法は?

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 シェル内蔵機能の乱用(Bash文書による)
126呼び出されたコマンドを実行できません。
127 "コマンドが見つかりません。"
128+n 致命的なエラー信号「n」
130 Ctrl-Cでスクリプトが終了しました。
255*終了ステータスが範囲外です。

開発者にとって、125未満のものはすべて公正なゲームであり、実際に予測できる理由は次のとおりです。彼の答えにl0b0が言及されました。man、アプリケーションのページやソースコードを読み、コードの意味を把握します(実際に文書化されている場合)。

答え2

長すぎます。終了コードはアプリケーションごとに異なります。

いくつかの緩いルールがあります。 POSIXシェルで(たとえば)falseプレフィックスが付いたすべての成功は終了コード1を返しますが、開発者は必要な目的に応じて0から255の終了コードを使用できます。最終的にそれが何を意味するのかを知るには、ドキュメント(最良の場合)またはコード(最悪の場合)を調べる必要があります。ページ終了コードを含むプログラムは、通常(GNUツールなど)というセクションにリストされています。!! truemanEXIT STATUSfind

いくつかの一般的な意味がここにリストされています/usr/include/sysexits.h。可能であれば、その意味を使用してください。 〜のように@AnsgarEsztermannが指摘しました。、これを使用することを選択した人(主にC / C ++開発者)を除いて、Bash参照やアプリケーション参照ではありません。ABSによると)。

関連情報