同様のコードがあります。
trap 'error ${LINENO} ${BASH_COMMAND}' ERR
エラーメッセージもキャプチャしたいです。エラーメッセージを印刷するための組み込み変数はありますか?
答え1
シェルスクリプトのエラー処理は非常に簡単です。あらゆる種類の問題を検出する唯一の標準化された方法は次のとおりです。戻りコードコマンド(エラーが発生した場合は0ではありません)と印刷先標準エラー(ファイル記述子2)。デフォルトでは、標準エラーが端末に出力されます。error
たとえば、エラーメッセージが他の出力によって隠されるなどの理由でこれを渡す必要がある場合は、現在のシェルを次のように置き換えることができます。標準エラーを一時ファイルに保存:
trap 'rm -f "${stderr_output_file}"' EXIT
stderr_output_file="$(mktemp)"
exec 2>"${stderr_output_file}"
[the rest of your program]