我一直在重构一些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 :(得分: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}
,在该部分中定义。