環境変数がセットされているかを確認する
下記の例では、SRC_ROOT という環境変数が設定されているかを調べ、設定されていない場合はメッセージを表示して終了しています。
#!/bin/bash
if [ -z "$SRC_ROOT" ]; then
echo 'Please set the "SRC_ROOT" environment variable and try again.' >&2
exit -1
fi
echo 'Program continues...'-z は、指定された変数の文字列長が 0 であるかを調べるオプションです。
SRC_ROOT 変数にスペースを含む文字列が設定されている場合に備えて、"$SRC_ROOT" のようにダブルクォートで囲むことをお勧めします。
☝️ ワンポイント
echo の出力を >&2 とリダイレクトすると標準エラー出力へ出力できます。$ ./sample.sh
Please set the "SRC_ROOT" environment variable and try again.
$ SRC_ROOT=/Users/maku/src ./sample.sh
Program continues...
(おまけ)test コマンドについて
if [ -z "$SRC_ROOT" ]; then
という条件判定は、次のように test コマンドを使うのと同等です。
if test -z "$SRC_ROOT"; then
test -z コマンドは、指定された変数値の文字列長が 0 かどうかを確認するコマンドです。
これを利用して、上記のように 特定の変数値がセットされていない ことを調べることができます。
ちなみに、[ は特殊な記号のように見えますが、実質は test コマンドのエイリアスなので、前後にスペースが必要なことに注意してください。