シェルスクリプトを使っているときに、変数 VAR
が定義されていない場合の初期値を設定する方法
if文を使った方法
これが一般的かもしれないが、書き方としては冗長になってしまう
変数 VAR
がNULL(文字列の長さが0)かどうかを判定して、NULLであれば値を代入する
if [ -z "$VAR" ]; then
VAR=hoge
fi
echo $val
# => hoge
変数展開{}中で演算子を使って、変数の存在や値をチェックする
-
、 =
、 ?
、 +
演算子と :
を使う
${VAR:-hoge}
変数 VAR
が未定義 or NULL の場合、指定した値 hoge
を返す
このとき、VAR
に hoge
は 代入されない
# VAR は未定義
echo $VAR
# =>
echo ${VAR:-hoge}
# => hoge
echo $VAR
# =>
${VAR:=hoge}
変数 VAR
が未定義 or NULL の場合、指定した値 hoge
を返す
さらに、VAR
に hoge
が 代入される
# VAR は未定義
echo $VAR
# =>
echo ${VAR:=hoge}
# => hoge
echo $VAR
# => hoge
${VAR:?hoge}
変数 VAR
が未定義 or NULL の場合、標準エラー出力に出力され、シェルスクリプトの実行を終了する
# VAR は未定義
echo $VAR
# =>
echo ${VAR:?hoge}
# => -bash: VAR: hoge
変数 VAR
が定義されている場合は、定義済みの値が出力される
VAR=fuga
echo $VAR
# => fuga
echo ${VAR:?hoge}
# => fuga
${VAR:+hoge}
変数 VAR
が定義されている場合、指定した値 hoge
を返す
VAR=fuga
echo $VAR
# => fuga
echo ${VAR:+hoge}
# => hoge
変数が未定義 or NULL の場合には NULL を返す
# VAR は未定義
echo $VAR
# =>
echo ${VAR:+hoge}
# =>