変数が設定されていないかテストします。

変数が設定されていないかテストします。

変数(その名前はスクリプトで静的に知られています)が設定されていない(空でない)ことを確認するポータブルテストはありますか?

ベストアンサー1

スカラー変数の場合、標準(POSIX)sh構文が使用されます。

if [ "${var+set}" != set ]; then
  echo var is not set
fi

または、よりきれいですが、あまり明確ではありません。

if [ -z "${var++}" ]; then
  echo var is unset
fi

または:

if ${var+false}; then
  echo var is unset
fi

配列変数の場合(配列持ち運べる)、bash、kshでは、配列にリスト(空のリストを含む)が割り当てられていない場合、inzshまたはyashunsetが返されます。未設定インデックス0の要素が設定されていない場合。連想配列と同じです(キー「0」の場合)。

zsh(シミュレーションでない場合shexport varまたはreadonly var 主張する変数ですが値を提供しないので、それ以外のシェルはこれをこの変数としてzsh報告します( / を呼び出す前に値が割り当てられていない場合)。varunsetvarexportreadonly

おすすめ記事