如何检查zsh中是否设置了变量?

pau*_*kow 8 zsh

测试变量是否已在zsh中设置的规范/惯用方法是什么?

if ....something.... ; then
    print "Sweet, that variable is defined"
else
    print "That variable is not defined"
fi
Run Code Online (Sandbox Code Playgroud)

这是bash的SO答案.

pau*_*kow 15

在Zsh中执行此操作的典型方法是:

if (( ${+SOME_VARIABLE} )); then
Run Code Online (Sandbox Code Playgroud)

例如:

if (( ${+commands[brew]} )); then
    brew install mypackage
else
    print "Please install Homebrew first."
fi
Run Code Online (Sandbox Code Playgroud)

在Zsh 5.3及更高版本中,您可以-v在条件表达式中使用运算符:

if [[ -v SOME_VARIABLE ]]; then
Run Code Online (Sandbox Code Playgroud)

符合POSIX标准的测试将是

if [ -n "${SOME_VARIABLE+1}" ]; then
Run Code Online (Sandbox Code Playgroud)


che*_*ner 6

使用-v(在引入zsh5.3)操作者在的条件表达式。

% unset foo
% [[ -v foo ]] && echo "foo is set"
% foo=
% [[ -v foo ]] && echo "foo is set"
foo is set
Run Code Online (Sandbox Code Playgroud)