我遇到了这个表达式$ {varname:-text},以及其他3种类似形式:
${varname-text}
${varname:=text}
${varname:?text}
好像是文本替换,如何使用这个表达式?
答案 0 :(得分:0)
standards document for the POSIX shell解释了这些特殊的参数扩展格式:
${parameter:-word}
使用默认值。如果参数未设置或为null,则扩展 用词代替;否则,参数值应为 取代
${parameter:=word}
指定默认值。如果参数未设置或为null,则扩展 字应分配给参数。在所有情况下,最终的价值 参数应替换。只有变量,而不是位置 参数或特殊参数可以这种方式分配。
${parameter:?[word]}
如果为空或未设置则表示错误。如果参数未设置或为null,则 单词的扩展(或者如果单词是,则表示未设置的消息 省略)应写入标准错误,shell退出a 非零退出状态。否则,参数值应为 取代。交互式shell不需要退出。
这里有一些例子和一个更完整的表格。所有符合POSIX标准的shell都必须支持它们。有些like bash
包含其他格式。