bashで変数が空("")かどうかを判断するにはどうしたらいいですか?
if [ "x$variable" = "x" ]`とすることが推奨されていると聞いたことがあります。
これは正しい**方法なのでしょうか? (もっとわかりやすい方法があるはずです)
これは、変数が設定されていない場合や、空の文字列("")に設定されている場合に真を返します。
if [ -z "$VAR" ];
-z`は最高の方法です。
私が使った別のオプションは、変数を設定することですが、それは他の変数で上書きすることができます。
export PORT=${MY_PORT:-5432}
もし、$MY_PORT変数が空であれば、PORTは5432に設定され、そうでなければPORTはMY_PORTの値に設定されます。コロンとダッシュを含む構文に注意してください。
$MY_PORT
PORT
MY_PORT
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
これは、変数が設定されていない場合や、空の文字列("")に設定されている場合に真を返します。
-z`は最高の方法です。
私が使った別のオプションは、変数を設定することですが、それは他の変数で上書きすることができます。
もし、
$MY_PORT
変数が空であれば、PORT
は5432に設定され、そうでなければPORTはMY_PORT
の値に設定されます。コロンとダッシュを含む構文に注意してください。set-emptyとunsetの状態を区別することに興味があるなら、bashの-uオプションを見てください。