![見出し画像](https://assets.st-note.com/production/uploads/images/69189077/rectangle_large_type_2_23a215400941988947369392fef4e32e.png?width=1200)
Photo by
ryonakano
【bash】変数未設定実行の阻止コマンド'set -euo pipefail'の分析
はてなのブコメにもあったけれども、bashスクリプトの先頭には
— 高梨陣平 (@jingbay) December 28, 2021
#!/usr/env bash
set -euo pipefail
これを入れましょう。変数の未設定での実行が阻止されます。
はてなのブコメにもあったけれども、bashスクリプトの先頭には
#!/usr/env bash
set -euo pipefail
これを入れましょう。変数の未設定での実行が阻止されます。
というツイートの、コマンドとオプションの意味がわからなかったので調べました。
以下はそのメモです。
set -e
エラーがあったら直ちにシェルを終了する
(ないと止まらない)
set -u
未定義変数を使用したときにエラーとする
set -o
シェルオプションを有効にする
pipefail
パイプラインの返り値を最後のエラー終了値にする
エラー終了値がない場合は0を返す
これらをつなげて
set -euo pipefail
と書ける。
なお上部にある
#!/usr/env bash
は正しくは
#!/usr/bin/env bash
である模様。
/usr/bin/envだと思う。
— カナやん@みかん本停滞中 (@rkarsnk) December 31, 2021
本当だw コピペ元から抜けていた模様です。ありがとうございます :-)
— 高梨陣平 (@jingbay) December 31, 2021