2022-07-27 シェルスクリプトの set -eu / SREの理念と原則
シェルスクリプトの set -eu
シェルスクリプトのグッドプラクティスとして知られている -eu
のフラグ。
シェルスクリプトを書くときはset -euしておく - Qiita
#!/bin/bash -eu
# ここにシェルスクリプト書く
以下はmanより引用。
-e
Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command (see SHELL GRAMMAR above), exits with a non-zero status.
-u
Treat unset variables and parameters other than the special parameters “@” and “*” as an error when performing parameter expansion. If expan- sion is attempted on an unset variable or parameter, the shell prints an error message, and, if not interactive, exits with a non-zero sta- tus.
ただ下記のケースでは、-e
は邪魔になることがあるので使う場合は注意。
-e
はcommand1 || command2
みたいなことが出来なくなるの使うことないな。-u
は付けといて良いが。
-e
を一時的に無効化する
-e
を途中で無効化するというアプローチもあり。
返り値のチェックでシェルスクリプトが止まらないようにする - CUBE SUGAR CONTAINER
#!/usr/bin/env bash set +e # 一時的に機能を無効化する bash -c "exit 1" # 返り値が非ゼロになるコマンドを実行する set -e # コマンドの実行が終わったら再び有効化する
もしくは下記のように || true
を使うこともできる。
# 一連のコマンドとして返り値が必ずゼロになる bash -c "exit 1" || true
SREの理念と原則
SRE の話。基調講演の山口さんのお話がとても良かった。