我在bash(3.00)shell脚本中对变量进行了大量测试,如果未设置变量,则会分配一个默认值,例如:
if [ -z "${VARIABLE}" ]; then
FOO='default'
else
FOO=${VARIABLE}
fi
我似乎记得在一行中有一些语法,类似于三元运算符,例如:
FOO=${ ${VARIABLE} : 'default' }
(虽然我知道这不起作用......)
我疯了,还是有类似的东西存在?
#1楼
对于命令行参数:
VARIABLE=${1:-DEFAULTVALUE}
如果没有传递这样的参数, DEFAULTVALUE VARIABLE分配传递给脚本的第一个参数的值或DEFAULTVALUE的值。
#2楼
非常接近你发布的内容,实际上:
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.
#3楼
看到这里在3.5.3(壳参数扩展)
所以在你的情况下
${VARIABLE:-default}
#4楼
然后就是更简洁地表达你的'if'结构的方式:
FOO='default'
[ -n "${VARIABLE}" ] && FOO=${VARIABLE}
#5楼
即使你可以像默认值一样使用另一个变量的值
有一个文件defvalue.sh
#!/bin/bash
variable1=$1
variable2=${2:-$variable1}
echo $variable1
echo $variable2
运行./defvalue.sh first-value second-value输出
first-value
second-value
并运行./defvalue.sh first-value输出
first-value
first-value