見出し画像

【bash】変数未設定実行の阻止コマンド'set -euo pipefail'の分析

はてなのブコメにもあったけれども、bashスクリプトの先頭には

#!/usr/env bash
set -euo pipefail

これを入れましょう。変数の未設定での実行が阻止されます。
https://twitter.com/jingbay/status/1475933400104337409

というツイートの、コマンドとオプションの意味がわからなかったので調べました。
以下はそのメモです。

set -e

エラーがあったら直ちにシェルを終了する
(ないと止まらない)

set -u

未定義変数を使用したときにエラーとする

set -o

シェルオプションを有効にする

pipefail

パイプラインの返り値を最後のエラー終了値にする
エラー終了値がない場合は0を返す

これらをつなげて

set -euo pipefail

と書ける。

なお上部にある

#!/usr/env bash

は正しくは

#!/usr/bin/env bash

である模様。

この記事が気に入ったらサポートをしてみませんか?