抱歉,如果这真的很简单或已经被问过,但由于问题的性质,我想不出任何搜索词可以放在搜索引擎上。
最近我看到了一些 bash 脚本,它们像这样分配变量值:
$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue}
$ echo "$MY_BASH_VAR"
myvalue
与最常见的赋值方式有什么区别:
MY_BASH_VAR=myvalue
$ echo "$MY_BASH_VAR"
myvalue
你可以看看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
假设$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