* パラメータ展開 デフォルト値 [#ba25fa81]
** パラメータのデフォルト値を指定 [#n7c2aa54]
*** 文法 [#n0d52228]
${パラメータ-値}
${パラメータ:-値}
*** 例 [#ffff13c0]
$ FOO=foo # FOOにfooを代入
$ echo ${FOO-bar} # FOOに値があるので、
foo # その値fooが表示される
$ echo ${FOO1-bar} # FOO1という変数は存在しない(値がない)ので、
bar # デフォルト値barが表示される
$ echo $FOO1 # なお、この時にFOO1という変数が新たに作られているわけではない
(空) # この変数が作られるか否かが${パラメータ-値}と${パラメータ=値}の違い
$ FOO= # また、FOOが空文字の場合、
$ echo ${FOO:bar} # ${パラメータ-値}は、
(空) # その空文字が表示される
$ echo ${FOO:-bar} # これを避けるには${パラメータ:-値}とする
bar # 実際の使いどころでは${パラメータ:-値}の方を多く使うと思われる
** パラメータのデフォルト値を代入 [#ed277de3]
*** 文法 [#p1eff170]
${パラメータ=値}
${パラメータ:=値}
*** 例 [#ef088670]
$ FOO=foo # ${パラメータ=値}と${パラメータ-値}は似ていて、
$ echo ${FOO:=bar} # FOOに値があるので、
foo # それが表示され、
$ echo ${FOO1:=bar} # FOO1に値がないので
bar # デフォルト値barが表示される
$ echo $FOO1 # 違うのは、${パラメータ=値}を実行するとそのパラメータに値が代入される点
bar # つまり、FOO1はすでに値を持つ変数となっている
** デフォルト値を変数にする [#u6cbc53b]
$ FOO= # ${パラメータ-値}の値を変数にするのは構わない
$ BAR=bar # この場合、FOOが空、BARがbarなので、
$ echo ${FOO:-$BAR} # $BARが評価されて、
bar # barが表示される