bash:“$ {A:-B}”运算符

时间:2013-04-24 13:36:53

标签: bash operators

我一直在重构一些bash代码,偶然发现了这个bash符号:

"${string_a:-string_b}"

我在命令行上玩了一点:

$ echo "${string_a:-string_b}"
string_b
$ export string_a=string_a_value
$ echo "${string_a:-string_b}"
string_a_value

我似乎{a:-b}符号返回变量 a的值(如果已定义)或字符串 b否则。

我在哪里可以找到此运营商更正式的定义?

3 个答案:

答案 0 :(得分:3)

您可以使用man bash访问bash文档。要搜索类型/

  

$ {参数:-word}

     
    

使用默认值。如果参数未设置或为null,则替换 word 的扩展。否则,参数的值将被替换。

  

答案 1 :(得分:2)

同伴压力,我发表评论作为回答:)

我喜欢这张参考卡:Advanced Bash-Scripting Guide,特别是在你的情况下它会很有用“#表B-4。参数替换和扩展”

我不会复制他们表示不会侵犯任何版权的任何问题。只需在那里找到所有信息。

答案 2 :(得分:2)

另一个有用的链接是Bash参考中的Shell Parameter Expansion section 手册。 :-运算符定义为:

  

$ {parameter:-word}如果参数未设置或为null,则扩展   单词被替换。否则,参数的值将被替换。

顺便说一句,bash包含三个类似的操作符${parameter:=word}${parameter:?word}${parameter:+word},在该部分中定义。