パラメータ展開 デフォルト値
パラメータのデフォルト値を指定
文法
${パラメータ-値}
${パラメータ:-値}
例
$ 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 # 実際の使いどころでは${パラメータ:-値}の方を多く使うと思われる
パラメータのデフォルト値を代入
文法
${パラメータ=値}
${パラメータ:=値}
例
$ FOO=foo # ${パラメータ=値}と${パラメータ-値}は似ていて、
$ echo ${FOO:=bar} # FOOに値があるので、
foo # それが表示され、
$ echo ${FOO1:=bar} # FOO1に値がないので
bar # デフォルト値barが表示される
$ echo $FOO1 # 違うのは、${パラメータ=値}を実行するとそのパラメータに値が代入される点
bar # つまり、FOO1はすでに値を持つ変数となっている
デフォルト値を変数にする
$ FOO= # ${パラメータ-値}の値を変数にするのは構わない
$ BAR=bar # この場合、FOOが空、BARがbarなので、
$ echo ${FOO:-$BAR} # $BARが評価されて、
bar # barが表示される