bashの変数が空かどうかを判断するには?

bashで変数が空("")かどうかを判断するにはどうしたらいいですか?

if [ "x$variable" = "x" ]`とすることが推奨されていると聞いたことがあります。

これは正しい**方法なのでしょうか? (もっとわかりやすい方法があるはずです)

ソリューション

これは、変数が設定されていない場合や、空の文字列("")に設定されている場合に真を返します。

if [ -z "$VAR" ];
解説 (10)

-z`は最高の方法です。

私が使った別のオプションは、変数を設定することですが、それは他の変数で上書きすることができます。

export PORT=${MY_PORT:-5432}

もし、$MY_PORT変数が空であれば、PORTは5432に設定され、そうでなければPORTはMY_PORTの値に設定されます。コロンとダッシュを含む構文に注意してください。

解説 (1)

set-emptyとunsetの状態を区別することに興味があるなら、bashの-uオプションを見てください。

$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z "$BAR" ] && echo true
bash: BAR: unbound variable
$ BAR=""
$ echo $BAR

$ [ -z "$BAR" ] && echo true
true
解説 (0)