
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 ツール)というセクションにリストされることがよくあります。!
! true
man
EXIT STATUS
find
いくつかの一般的な意味は/usr/include/sysexits.h
、可能な限りそれらを使用するようにしています。@AnsgarEsztermannは指摘するこれらはBashリファレンスではなく、Bashを使用することを選択した人(主にC / C++開発者)を除いて、アプリケーションリファレンスでもありません。ABSによると)。