我以前从未见过这种+x}
语法,也找不到有关它的文档。它有什么作用?
if [[ -z "${EMPLOYEE_CLUSTER+x}" ]]; then
export EMPLOYEE_CLUSTER=shared
fi
我以前从未见过这种+x}
语法,也找不到有关它的文档。它有什么作用?
if [[ -z "${EMPLOYEE_CLUSTER+x}" ]]; then
export EMPLOYEE_CLUSTER=shared
fi
如果定义了变量EMPLOYEE_CLUSTER
(甚至是空字符串),则扩展扩展为x
. 由于x
不是空字符串,因此[[
测试将评估为真。如果未定义变量,则扩展扩展为空,并且测试评估为假。请注意,冒号的存在会${EMPLOYEE_CLUSTER:+x}
改变扩展;该变量必须设置且非空才能获得x
输出。
这是一个稍微不寻常的用法,但在允许空值但必须设置变量的测试中很难做得更好。该表示法更常用于有条件地将值传递给命令。例如:
mythical-creature ${UNICORN:+"-u"} ${UNICORN}
这会将-u
选项传递给mythical-creature
if$UNICORN
已定义且非空 - 以及存储在$UNICORN
. 如果$UNICORN
未定义且非空,则不向命令传递任何参数。
请参阅Bash 手册中的Shell 参数扩展— 这是本节中记录的第四个符号。