bash - シェル変数の初期設定

変数の値がヌルかなどの条件により、代入する値や表示する内容を変えることができる。

${var:-word} varに値が入っていないならwordを値として返す
${var:=word} varに値が入っていないならwordを代入する
${var:?word} varに値が入っていないならword出力する
${var:+word} varに値が入っていたらwordを値として返す

:は省略可能で省略した場合、変数の値が未設定かヌルが代入されている場合にヌル文字が
入っている変数として扱う。未定義の変数の場合は値が入っていない変数として扱う。

$ var1=abc
$ echo ${var1:-xyz}    #値が入っていればそのまま表示
abc
$ var1=
$ echo ${var1:-xyz}    #値が入っていなければ-以降を表示
xyz
$ echo $var1           #値は入っていないまま

$ var1=abc
$ echo ${var1:=xyz}    #値が入っていればそのまま表示
abc
$ var1=
$ echo ${var1:=xyz}    #値が入っていなければ=以降を代入
xyz
$ echo $var1           #値が代入されている
xyz
$ var1=abc
$ echo ${var1:?xyz}    #値が入っていればそのまま表示
abc
$ var1=
$ echo ${var1:?xyz}    #値が入っていなければ?以降を表示
xyz                    # - との違いは出力する文字列を変数の値の代わりとして利用できない
$ echo $var1           #値は入っていないまま

$ var1=abc
$ echo ${var1:+xyz}    #値が入っていれば+以降を表示
xyz
$ var1=
$ echo ${var1:+xyz}    #値が入っていなければそのまま表示

$ echo $var1           #値は入っていないまま