永和システムマネジメント アジャイル事業部でも、最近流行り(?)の技術ブログをゆるくはじめることにしました。 弊社メンバーによる、気合の入った熱い記事や、脱力系のゆるい記事、はたまた日々の仕事で学んだ TIL などを自分たちのペースで皆さんに伝えられればと思います。
わたしたちに会った時の話のネタにするなどしていただければ、幸いです。
では、よろしくお願いいたします。
シェルスクリプトで途中のコマンドが失敗したら直ちに実行を中断してほしいことがあります。
事前に 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 ':(' # 実行されては困る処理