Bash v3 以下でも set -u 時に変数が定義されてるか確認する方法
以下のように、変数への値がセットされているかで分岐するシェルスクリ プトがあったとします。このスクリプトは正常に動作します。 #!/bin/sh if [ -n "$CIRCLE_PULL_REQUEST" ]; then echo '$CIRCLE_PULL_REQUEST is defined.' else echo '$CIRCLE_PULL_REQUEST is NOT defined.' fi 堅牢なシェルスクリプトを書く時は ‘#!/bin/sh’ を ‘#!/bin/sh -u’ に することが多いです。typo 等による意図しない変数の利用を防いでくれ ます。 今回はこれがコンフリクトし、以下のようなエラーになります。 $ ./v.sh ./v.sh: line 3: CIRCLE_PULL_REQUEST: unbound variable 対策方法 set -uしてるときに変数が定義されてるかチェックする - Qiita 残念ながら macOS High Sierra では上記の方法は使えませんでした。 $ ./v.bash ./v.bash: line 3: conditional binary operator expected $ which -a bash /bin/bash $ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17) Copyright (C) 2007 Free Software Foundation, Inc....