1

プロジェクトの configure.ac ファイルの一般的なパターンを理解しようとしています。これは、解析に苦労しているバシズムであることは間違いありません。次に例を示します。

LDFLAGS="${LDFLAGS:+$LDFLAGS }$OTHERFLAG"

その意図は、OTHERFLAG の内容によって LDFLAGS の現在の値を拡張することであると思われます。どちらかを書く方が簡単なようです:

LDFLAGS="$LDFLAGS $OTHERFLAG"

bash マニュアルの関連セクションには、次のように記載されています。

${parameter:+word}
    If parameter is null or unset, nothing is substituted, otherwise the expansion of word is substituted.

ここで何か防御的なことが起こっていると思いますが、正確にはわかりません。

4

1 に答える 1

3

あなたが書く場合:

LDFLAGS="$LDFLAGS $OTHERFLAG"

設定されていない場合、$LDFLAGS望ましくない可能性がある空のスペースで始まる文字列が含まれます。

それが理由です :

LDFLAGS="${LDFLAGS:+$LDFLAGS }$OTHERFLAG"

例:

tiago@dell:~$ unset a ; b="test"; a="${a:+$a }$b"; echo "$a"
test
tiago@dell:~$ unset a ; b="test"; a="$a $b"; echo "$a"
 test
于 2015-02-12T12:56:24.083 に答える