シェルスクリプトで途中のコマンドが失敗したら直ちに実行を中断してほしいことがあります。
事前に set -e
しておけば、コマンドが失敗したとき (non-zero で終了したとき) にスクリプト自体が異常終了します。
#!/bin/sh set -e false # ここで中断される echo ':(' # 実行されては困る処理
sh や bash も -e
を同じように解釈するので、#!/bin/sh -e
というように shebang に書くこともできます。
反対に set -o errexit
というやや冗長な書き方もあります。
次のような箇所では、コマンドが non-zero を返してもスクリプトは終了しません。
bash の pipefail オプションを使えばパイプラインで失敗したときにも終了できます。
#!/bin/bash -eo pipefail false | true # ここで中断される echo ':(' # 実行されては困る処理