0

抱歉,如果这真的很简单或已经被问过,但由于问题的性质,我想不出任何搜索词可以放在搜索引擎上。

最近我看到了一些 bash 脚本,它们像这样分配变量值:

$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue}
$ echo "$MY_BASH_VAR"
myvalue

与最常见的赋值方式有什么区别:

MY_BASH_VAR=myvalue
$ echo "$MY_BASH_VAR"
myvalue
4

2 回答 2

2

你可以看看http://linux.die.net/man/1/bash

${parameter:-word}  Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.

这提供了一个默认值:MY_BASH_VAR 保留其值,否则定义,它采用默认的“myvalue”

bruce@lorien:~$ A=42
bruce@lorien:~$ A=${A:-5}
bruce@lorien:~$ echo $A
42
于 2013-07-09T11:33:47.483 回答
2

假设$MY_BASH_VAR已经设置好了。在这种情况下,它将保持相同的值。如果没有,它将获得myvalue.

案例1)$MY_BASH_VAR已经设置。

$ MY_BASH_VAR="hello"
$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue}
$ echo "$MY_BASH_VAR"
hello

情况 2)$MY_BASH_VAR之前未设置。

$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue}
$ echo "$MY_BASH_VAR"
myvalue

case 3)$MY_BASH_VAR设置为空字符串。

$ MY_BASH_VAR=""
$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue}
$ echo "$MY_BASH_VAR"
myvalue
于 2013-07-09T11:34:47.610 回答