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

时间:2017-03-07 18:08:02

标签: zsh

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

if ....something.... ; then
    print "Sweet, that variable is defined"
else
    print "That variable is not defined"
fi

这是the SO answer for bash

2 个答案:

答案 0 :(得分:13)

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

if (( ${+SOME_VARIABLE} )); then

例如:

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

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

if [[ -v SOME_VARIABLE ]]; then

符合POSIX的测试将是

if [ -n "${SOME_VARIABLE+1}" ]; then

答案 1 :(得分:5)

在条件表达式中使用-v(在zsh 5.3)运算符中引入。

% unset foo
% [[ -v foo ]] && echo "foo is set"
% foo=
% [[ -v foo ]] && echo "foo is set"
foo is set