「${parameter:+word}」の目的とユースケースは何ですか? [閉鎖]

「${parameter:+word}」の目的とユースケースは何ですか? [閉鎖]

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

おすすめ記事