如果未设置变量,使用${parameter:-word}
形式的参数扩展来评估默认值时,引号的最佳做法是什么?
例如,假设设置了-u
的Bash shell脚本(在评估未定义或未设置的变量时生成错误),以测试变量是否具有值,哪种是最好的写入方式相当于if [[ -z "$FOO" ]]
?
if [[ -z "${FOO:-}" ]]
或
if [[ -z ${FOO:-""} ]]
或其他什么?
答案 0 :(得分:6)
如果您使用的是bash
的最新版本(撰写本文时为4.2),则可以使用-v
选项测试是否设置了变量而不尝试扩展它。< / p>
if [[ -v FOO ]]; then
echo "FOO=$FOO"
else
echo "FOO not set"
fi
如果您使用的是旧版本,我只会使用
if [[ -z ${FOO:-} ]];
报价不是必需的,IMO看起来最干净。