我想在bash
中获得以下行为,我觉得这可能在一行中,但我不知道确切的语法(并且无法在文档中找到它)。
FOO=somename
BAR=123
如果未定义BAR或为空,则最终结果应为somename
。
如果BAR有值,则最终结果应为somename-123
当前的例子是即使没有定义BAR也不会添加破折号,这不是我想要的。
回显“$ {FOO} - $ {BAR}”
答案 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
。