是的,这里有一个类似的主题:Test if a variable is set in bash when using "set -o nounset"
然而,有许多不同的答案,并不是特别清楚。
以下是否足以测试变量是否设置且不为空?
#!/bin/bash
set -o nounset
if [[ ! -z "${EXAMPLE-}" ]]; then
echo "Variable is defined and is not empty..."
fi
答案 0 :(得分:4)
是,[[ ! -z "${EXAMPLE-}" ]]
可以安全地确定名为EXAMPLE
的变量是否已分配非空值,即使set -u
处于有效状态。
就我个人而言,我会写[[ -n "${EXAMPLE-}" ]]
甚至是[[ ${EXAMPLE-} ]]
- 利用[[ ]]
安全的额外简洁而[ ]
不值得信赖 - 但所有这些都是正确的。
答案 1 :(得分:2)
您可以使用-v
运算符检查名称是否已设置为值:
if [[ -v EXAMPLE ]]; then
echo "Safe to expand: $EXAMPLE"
fi