シェルスクリプトでエラー時に処理を止める方法

Linux

シェルスクリプトでは、エラーが起きてもそのまま処理を続けます。異常時に処理を止める方法です。

以下のコードを先頭に書きます。

set -eu -o pipefail
trap 'echo "ERROR: line no = $LINENO, exit status = $?" >&2; exit 1' ERR

set -e

エラーがあったらシェルスクリプトをそこで打ち止めにしてくれます。

trap

set -e だけではどこで止まったかが分からないので、trapで表示します。

pipefail

set -e だけだとコマンドをパイプでつないだ場合に上手く止まらない場合があります。

set -o pipefail をつけると、パイプの途中のコマンドが失敗しても止まります。

set -u

set -u を指定すると宣言していない変数が使用されるとエラーになります。