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