使用bash中的单个命令将默认值分配给shell变量

我对bash(3.00)shell脚本中的变量进行了大量测试,如果变量没有设置,那么它会分配一个默认值,例如:

if [ -z "${VARIABLE}" ]; then 
    FOO='default'
else 
    FOO=${VARIABLE}
fi

我似乎记得在一行中有这样的语法,类似于三元运算符,例如:

FOO=${ ${VARIABLE} : 'default' }

(虽然我知道这是行不通的)

我疯了吗,还是有这样的事情存在?


非常接近您发布的内容,实际上:

FOO=${VARIABLE:-default}  # If variable not set or null, use default.

或者,它也会将default分配给VARIABLE

FOO=${VARIABLE:=default}  # If variable not set or null, set it to default.

对于命令行参数:

VARIABLE=${1:-DEFAULTVALUE}    

它向VARIABLE分配传递给脚本的第一个参数的值DEFAULTVALUE如果没有传递这样的参数,则DEFAULTVALUE的值。


如果变量相同,那么

: "${VARIABLE:=DEFAULT_VALUE}"

如果未定义,则将DEFAULT_VALUE分配给VARIABLE。 双引号可防止通配和分词。

另请参阅Bash手册中的第3.5.3节“外壳参数扩展”。

链接地址: http://www.djcxy.com/p/17463.html

上一篇: Assigning default values to shell variables with a single command in bash

下一篇: line Bash infinite while loop