如何在定义变量时将字符串附加到bash中而不是null?

时间:2016-11-23 18:27:29

标签: bash

我想在bash中获得以下行为,我觉得这可能在一行中,但我不知道确切的语法(并且无法在文档中找到它)。

FOO=somename
BAR=123

如果未定义BAR或为空,则最终结果应为somename。 如果BAR有值,则最终结果应为somename-123

当前的例子是即使没有定义BAR也不会添加破折号,这不是我想要的。

回显“$ {FOO} - $ {BAR}”

1 个答案:

答案 0 :(得分:4)

来自man bash

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

示例:

foo="somename"
bar="123"
echo "${foo}${bar:+-$bar}"

这会打印somename-123。如果您设置bar="",则会打印somename