アプリケーションの終了コードを調べるにはどうすればいいですか?

アプリケーションの終了コードを調べるにはどうすればいいですか?

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は指摘するこれらはBashリファレンスではなく、Bashを使用することを選択した人(主にC / C++開発者)を除いて、アプリケーションリファレンスでもありません。ABSによると)。

関連情報