web-dev-qa-db-fra.com

Comment vérifier si une variable est définie dans zsh?

Quelle est la manière canonique/idiomatique de tester si une variable a été définie dans zsh?

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

Voici la réponse SO pour bash .

11
paulmelnikow

La façon typique de le faire dans Zsh est:

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

Par exemple:

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

Dans Zsh 5.3 et versions ultérieures, vous pouvez utiliser le -v opérateur dans une expression conditionnelle:

if [[ -v SOME_VARIABLE ]]; then

Le test conforme POSIX serait

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

Utilisez le -v (introduit dans zsh 5.3) dans une expression conditionnelle.

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