在shell脚本中,$ {varname:-text}的特殊形式是什么?

时间:2012-10-04 05:46:12

标签: shell

我遇到了这个表达式$ {varname:-text},以及其他3种类似形式:

${varname-text}

${varname:=text}

${varname:?text}

好像是文本替换,如何使用这个表达式?

1 个答案:

答案 0 :(得分:0)

standards document for the POSIX shell解释了这些特殊的参数扩展格式:

${parameter:-word}
  

使用默认值。如果参数未设置或为null,则扩展   用词代替;否则,参数值应为   取代

${parameter:=word}
  

指定默认值。如果参数未设置或为null,则扩展   字应分配给参数。在所有情况下,最终的价值   参数应替换。只有变量,而不是位置   参数或特殊参数可以这种方式分配。

${parameter:?[word]}
  

如果为空或未设置则表示错误。如果参数未设置或为null,则   单词的扩展(或者如果单词是,则表示未设置的消息   省略)应写入标准错误,shell退出a   非零退出状态。否则,参数值应为   取代。交互式shell不需要退出。

这里有一些例子和一个更完整的表格。所有符合POSIX标准的shell都必须支持它们。有些like bash包含其他格式。