${VARIABLE+set} 是什么意思?

7

我正在查看别人的代码,不确定这是什么意思。它可能是一个变量调用VARIABLE+set,这个变量名很奇怪,因为它有一个+,或者它被求值,很难在Google中找到,因为它包含${} ;)


1
这种符号经常在GNU Autoconf生成的配置脚本中使用。 - anol
1个回答

12

我花了一些时间,但是我找到了一个链接,解释了这个命令的作用。它是bash参数替换的一种形式,如果$VARIABLE已设置,则将计算为"set",否则为空。这样可以通过以下方式检查变量是否已设置:

if [ -z "${VARIABLE+set}" ] ; then
    echo "VARIABLE is not set"
fi

值得一提的是,${VARIABLE+set} 同样可以用 ${VARIABLE+anything} 替代。使用 +set 的唯一原因是它略微更易于自我说明(虽然这并不足以阻止我提出这个问题)。


1
顺便提一下,这不仅仅是bash的功能,它是shell命令语言POSIX标准的一部分:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 - Ned Deily
自Unix shell的开始,即Bourne Shell以来,它就一直可用。 - shellter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接