Linuxシェルスクリプト: ある環境変数が定義されているかチェックする (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...'

-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 コマンドのエイリアスなので、前後にスペースが必要なことに注意してください。