庆典: “$ {A:-B}” 操作符

问题描述:

我已经重构了一些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否则。

我在哪里可以找到这个操作符的更正式的定义?

+0

我喜欢这张参考卡:http://tldp.org/LDP/abs/html/refcards.html#表B-4。参数替换和扩展 – fedorqui 2013-04-24 13:37:56

+0

太好了,通过它作为答案,我会接受它。 – 2013-04-24 13:39:02

+1

@fedorqui你的评论回答了这个问题:“我在哪里可以找到这个运算符的更正式的定义?”,我认为它可以回答。 – Kent 2013-04-24 13:40:22

同伴的压力,我张贴作为一个答案我的意见:)

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

我不会复制任何表明不违反任何版权的问题。只需在那里找到所有信息。

+2

最后一句话+1。 http://tldp.org/LDP-COPYRIGHT.html – Kent 2013-04-24 13:48:38

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

$ {参数:-word}

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

+1

有趣的是,这个运营商没有名字。 – 2013-04-24 13:43:16

另一个有用的链路是击参考 手册中的Shell Parameter Expansion section。的操作者:-定义为:

$ {参数:-word}如果参数是设置或者为空, 字的膨胀取代。否则,参数的值将被替换。

顺便提一下,bash实现三个类似的运营商${parameter:=word}${parameter:?word}${parameter:+word},在该部分中所定义。