使用引号" $ {parameter:-word}"参数扩展

时间:2014-04-30 22:38:29

标签: bash shell quotes variable-expansion

如果未设置变量,使用${parameter:-word}形式的参数扩展来评估默认值时,引号的最佳做法是什么?

例如,假设设置了-u的Bash shell脚本(在评估未定义或未设置的变量时生成错误),以测试变量是否具有值,哪种是最好的写入方式相当于if [[ -z "$FOO" ]]

if [[ -z "${FOO:-}" ]]

if [[ -z ${FOO:-""} ]]

或其他什么?

1 个答案:

答案 0 :(得分:6)

如果您使用的是bash的最新版本(撰写本文时为4.2),则可以使用-v选项测试是否设置了变量而不尝试扩展它。< / p>

if [[ -v FOO ]]; then
    echo "FOO=$FOO"
else
    echo "FOO not set"
fi

如果您使用的是旧版本,我只会使用

if [[ -z ${FOO:-} ]];

报价不是必需的,IMO看起来最干净。