🔢
シェルスクリプトでの変数定義
シェルスクリプトを使っているときに、変数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}
#=>
Discussion