取消设置环境变量与将其设置为零

取消设置环境变量与将其设置为零

是否习惯上能够​​通过显式设置变量而0不是取消设置来禁用 shell 脚本中的某些功能?更规范的方法是什么?

我问的原因是取消设置变量X允许使用类似${X:-foo}, where 的语法foo,以防X未设置。显式设置X0仍会导致foo在可能不希望的情况下进行评估。

答案1

我会一直使用unset.

变量扩展的各种形式允许您查看它是否已设置。

echo ${X:- X is set and not empty}
echo ${X- X is set, maybe empty}

答案2

比我记忆中的还要微妙。我以前从未使用过 := 版本。从左到右评估,分配立即生效。

这也可能是:内置“不执行任何操作”命令的一个有趣的目的。

Paul--) unset X
Paul--) printf '%s\n' "${#X}" "${X:-foo}" \
>                     "${#X}" "${X:=foo}" \
>                     "${#X}" "${X:-why}"
0
foo
0
foo
3
foo
Paul--) 

相关内容