パラメータ展開
Parameter expansion
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02
見てすぐに分からないのが難点
様々な解説があるが、頻繁に誤解あり。確認せよ。
${parameter:-word}
もしも parameter が未定義または空文字列の場合、word に置換する。そうでなければ parameter の値になる。
${parameter-word}
もしも parameter が未定義の場合、word に置換する。そうでなければ parameter の値になる。
${parameter:=word}
もしも parameter が未定義または空文字列の場合、word に置換し、parameter にも代入する。そうでなければ parameter の値になる。
${parameter=word}
もしも parameter が未定義の場合、word に置換し、parameter にも代入する。そうでなければ parameter の値になる。
${parameter:+word}
もしも parameter が未定義または空文字列の場合、空文字列に置換する。そうでなければ word に置換する。
${parameter+word}
もしも parameter が未定義の場合、空文字列に置換する。そうでなければ word に置換する。
${parameter:?word}
もしも parameter が未定義または空文字列の場合、エラー出力として word を表示して、シェルを異常終了(終了コード1)する。
word が無指定の場合にはデフォルトのエラーメッセージになる。
そうでなければ parameter の値になる。
${parameter?word}
もしも parameter が未定義の場合、エラー出力として word を表示して、シェルを異常終了(終了コード1)する。
word が無指定の場合にはデフォルトのエラーメッセージになる。
そうでなければ parameter の値になる。