【发布时间】:2020-09-19 03:38:25
【问题描述】:
我以前从未见过这种+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,如果$UNICORN 已定义且非空——以及存储在$UNICORN 中的值。如果$UNICORN 未定义且非空,则不向命令传递任何参数。
请参阅 Bash 手册中的 Shell parameter expansion — 这是本节中记录的第四个符号。
【讨论】: