Bash でのエラー処理
この記事では、bash でのエラー処理について説明します。 終了コード、errexit
、trap
などのオプションを知ることで、堅牢なスクリプトを作成し、bash の問題をより効果的に管理できることを思い出してください。
Bash の終了コード
終了コードに基づくエラー処理は、コマンドの失敗を検出するための標準的な手法です。 これは、外部コマンドに関して特に当てはまります。
bash の curl
コマンドは、既知のエラー コードに基づいて問題を処理する優れた例です。 ユーザー定義ルーチンとは対照的に、外部コマンド エラー コードは完全に文書化されています。
${?}
は、特定の行の前に実行された最後のコマンドの終了ステータスを格納します。 コード0
は、コマンドが正常に実行されたことを示します。 そうでなければ、何かが間違っていました。
case {?} in
0) {
true # ok
} ;;
*) {
false # something went wrong
}
Bash のエラー処理は、単純な終了コードで実行される場合があります。 怠惰な解決策が見つかるまで試すことができます。 少なくとも、エラー コードに従って問題を処理するためのいくつかの条件を実装した後、どの個人もこれを行うでしょう。
エラーで終了
エラー時の終了は、間違いなく、bash プログラマーが始めない最も役立つエラー検出および処理機能です。
trap
、EXIT
、ERROR
trap
を使用すると、シェルがシグナルを受信した場合に実行するコマンドを指定できます。 SIGNAL SPECs
はシグナルに付けられた名前です。 いくつかの頻繁な EXIT、ERROR、DEBUG、および RETURN
シグナル。
trap -l
コマンドを使用して、さらに多くのシグナルを一覧表示できます。 trap -p SIGSPEC
を使用して、どのコマンドが特定のシグナルにリンクされているかを判断することもできます。
たとえば、ERR
シグナルに対応するコマンドを特定したい場合があります。 そのような状況では、次のコマンド ラインを入力できます。
trap -p ERR
出力が空の場合、trap
はまだコマンドをシグナルにリンクしていません。
_() { echo oops ; }
trap _ ERR EXIT
これで、シグナル コマンドを出力しても空の結果が生成されなくなりました。
入力:
trap -p EXIT ERR
出力:
trap -- '_' EXIT
trap -- '_' ERR