理解configure.ac文件中的bashism

时间:2015-02-12 12:48:36

标签: bash autoconf m4

我试图理解项目的configure.ac文件中的常见模式。我很确定这是一个基础,我很难解析。这是一个例子:

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

目的似乎是通过OTHERFLAG中的内容扩展LDFLAGS的当前值。这似乎更简单:

LDFLAGS="$LDFLAGS $OTHERFLAG"

相关的section in the bash manual说:

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

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

1 个答案:

答案 0 :(得分: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