シェルスクリプトでは、エラーが起きてもそのまま処理を続けます。異常時に処理を止める方法です。
以下のコードを先頭に書きます。
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 を指定すると宣言していない変数が使用されるとエラーになります。