69
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シェルスクリプトでの変数定義

Last updated at Posted at 2016-10-16

シェルスクリプトを使っているときに、変数 VAR が定義されていない場合の初期値を設定する方法

if文を使った方法

これが一般的かもしれないが、書き方としては冗長になってしまう
変数 VAR がNULL(文字列の長さが0)かどうかを判定して、NULLであれば値を代入する

if [ -z "$VAR" ]; then
VAR=hoge
fi
echo $val
#=> hoge

変数展開{}中で演算子を使って、変数の存在や値をチェックする

-=?+ 演算子と : を使う

${VAR:-hoge}

変数 VAR が未定義 or NULL の場合、指定した値 hoge を返す
このとき、VARhoge代入されない

# VAR は未定義
echo $VAR
#=>
echo ${VAR:-hoge}
#=> hoge
echo $VAR
#=>

${VAR:=hoge}

変数 VAR が未定義 or NULL の場合、指定した値 hoge を返す
さらに、VARhoge代入される

# 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}
#=>
69
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?