使用此语法分配bash变量值有什么区别?

时间:2013-07-09 11:31:54

标签: linux bash shell variables syntax

很抱歉,如果这是非常简单或已经被问到的事情,但由于问题的性质,我无法想到任何搜索条件会放在搜索引擎上。

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

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

与分配这样的值的最常见方式有什么不同:

MY_BASH_VAR=myvalue
$ echo "$MY_BASH_VAR"
myvalue

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

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

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