Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
45
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

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

シェルスクリプトを使っているときに、変数 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}
#=>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
45
Help us understand the problem. What are the problem?