我在 bash(3.00)shell 脚本中对变量进行了大量测试,如果未设置该变量,则它将分配一个默认值,例如:
if [ -z "${VARIABLE}" ]; then
FOO='default'
else
FOO=${VARIABLE}
fi
我似乎想起了在一行中执行此操作的语法,类似于三元运算符,例如:
FOO=${ ${VARIABLE} : 'default' }
(尽管我知道那行不通...)
我疯了还是存在类似的东西?
实际上,它与您发布的内容非常接近。您可以使用称为 “bash 参数扩展” 的工具来完成此操作。
要获取分配的值,如果缺少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
Qouting 可以防止乱序和单词拆分。
如果变量相同,则
: "${VARIABLE:=DEFAULT_VALUE}"
如果未定义,则将DEFAULT_VALUE
分配给VARIABLE
双引号可防止出现乱码和单词拆分。
另请参见 Bash 手册中的第 3.5.3 节 “ Shell 参数扩展”。