理解config.ac文件中的抨击



我正在努力理解项目的config.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.

我认为这里有一些防御性的东西,但我不确定到底是什么。

如果您编写:

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

相关内容

  • 没有找到相关文章

最新更新