Bashマニュアルから
${parameter:+word}
引数がnullまたは設定されていない場合、何も置き換えられません。それ以外の場合、単語の拡張が置き換えられます。
これは、「パラメータ」のターゲット文字列が存在し、空でない場合にのみ文字列置換のように見えます。
このパラメータ拡張の目的とユースケースは何ですか?
ありがとうございます。
答え1
たとえば、コマンドラインにいくつかのフラグを追加するには、フラグ変数と一緒に使用できます。
use_x=1
param_x=foobar
somecmd ${use_x:+-x} ${use_x:+$param_x}
もちろん、with部分はparam_x
ワードセパレータやワイルドカードに脆弱なので、良い考えではありません。これは静的フラグ自体には問題ありませんが、通常ここでは配列を使用する方が強力です。
変数が設定されているかどうかをテストするには。 (コロンなし)[ -n "$var" ]
も同様に機能しますが、空の変数と設定されていない変数を区別するのに役立ちます。${var:+value}
${var+value}
unset a
b=
[ "${a+x}" = "x" ] && echo a is set
[ "${b+x}" = "x" ] && echo b is set