$ {MY_VAR:-1}在bash中意味着什么?

时间:2015-03-21 20:17:46

标签: bash

我在some documentation中看到了这一点。但它似乎没有做任何事......

~ $ echo $DYNO
run.9917
~ $ echo ${DYNO}
run.9917
~ $ echo ${DYNO:-1}
run.9917

:-1做了什么?

3 个答案:

答案 0 :(得分:2)

${DYNO:-1}表示如果DYNO存在且不为null,则返回其值;否则返回1。变量名称与:-内的默认值之间的{}可以实现此目的。

答案 1 :(得分:1)

Shell Parameter Section of the Bash Reference Manual

中介绍了这一点

"${var:-1}"表示如果已定义,则展开名为var的参数,如果没有,则展开1

其他类似的扩展:

  • "${var: -1}"表示从最后一个字符展开var的子字符串。
  • "${var:=1}"表示如果1未定义var,则无论如何都要扩展参数。

示例:

$ x=hi y=
$ echo "${x:-1}" "${x: -1}" "${y:-2}"
hi i 2

答案 2 :(得分:0)

${var:-word}如果var为空或未设置,word将替换为varvar的值不会改变。

$> echo "${bar:-1}"
$> 1
$> bar=3
$> echo "${bar:-1}"
$> 3
$> echo "${bar-1}"
$> 3