在 bash 中取消设置变量检查

bra*_*ito 2 bash unset

我声明了两个变量但未设置:

__var1=
__var2=
Run Code Online (Sandbox Code Playgroud)

现在我设置__var2有一些价值:

__var2=1
Run Code Online (Sandbox Code Playgroud)

当我尝试进行这样的检查时:

[ -z "$__var1" -a -z "$__var2" ] || echo "Both missing!"
Run Code Online (Sandbox Code Playgroud)

我收到了这条消息Both missing!。但这是不正确的

这是为什么?以及如何进行正确的检查,看看它们是否都丢失了?

kon*_*box 6

如果用户想要检查变量是否确实未设置而不仅仅是空值,您可以这样做:

$ A=1234
$ [[ -z ${A+.} ]] && echo "Variable is unset."
$ A=
$ [[ -z ${A+.} ]] && echo "Variable is unset."
$ unset A
$ [[ -z ${A+.} ]] && echo "Variable is unset."
Variable is unset.
Run Code Online (Sandbox Code Playgroud)

在你的情况下它可能是

[[ -z ${__var1+.} && -z ${__var2+.} ]] && echo "Both variables are unset!"
Run Code Online (Sandbox Code Playgroud)