シェルスクリプト: ある環境変数が定義されているかチェックする (test -z)

環境変数がセットされているかを確認する

下記の例では、SRC_ROOT という環境変数が設定されているかを調べ、設定されていない場合はメッセージを終了しています。

sample.sh
#!/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...'
☝️ ワンポイント 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 コマンドのエイリアスなので、前後にスペースが必要なことに注意してください。