1

我一直在重构一些 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

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

4

3 回答 3

3

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

${参数:-字}

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

于 2013-04-24T13:42:37.173 回答
2

同侪压力,我发表我的评论作为答案:)

我喜欢这张参考卡片:Advanced Bash-Scripting Guide,特别是在您的情况下,它会很有用"# Table B-4. Parameter Substitution and Expansion"

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

于 2013-04-24T13:42:27.623 回答
2

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

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

顺便说一句,bash 具有三个相似的运算符${parameter:=word},${parameter:?word}${parameter:+word}, 在该部分中定义。

于 2013-04-24T13:54:44.517 回答