変数がzshに設定されているかどうかを検証する標準的/慣用的な方法は何ですか?変数がzshに設定されているかどうかを確認するにはどうすればよいですか?
if ....something.... ; then
print "Sweet, that variable is defined"
else
print "That variable is not defined"
fi
ここはthe SO answer for bashです。
変数がzshに設定されているかどうかを検証する標準的/慣用的な方法は何ですか?変数がzshに設定されているかどうかを確認するにはどうすればよいですか?
if ....something.... ; then
print "Sweet, that variable is defined"
else
print "That variable is not defined"
fi
ここはthe SO answer for bashです。
Zshの中でこれを行うための一般的な方法は、次のとおりです。
はif ((${+commands[brew]})); then
brew install mypackage
else
print "Please install Homebrew first."
fi
Zshの5.3以降では、あなたが条件式で-v
演算子を使用することができます:たとえば
if ((${+SOME_VARIABLE})); then
if [[ -v SOME_VARIABLE ]]; then
POSIX準拠のテストは、
Uh、いいえ、[[]] 'は移植性がありません(POSIXではありません)。 – Jens
正しい方法はありますか?それを修正しましょう。 – paulmelnikow
移植可能なテストは '[-z" $ {SOME_VARIABLE + 1} "]'となります。変数が何か(空の文字列であっても)に設定されている場合、展開は '1'を返し、設定されていなければ空の文字列に展開します。 – chepner
-v
(zsh
5.3で導入された)演算子を条件式に使用します。
% unset foo
% [[ -v foo ]] && echo "foo is set"
% foo=
% [[ -v foo ]] && echo "foo is set"
foo is set
zsh 5.2で私のために働かない:zsh:不明な状態:-v – paulmelnikow
の可能性のある重複した[変数がバッシュに設定されているかどうかを確認する方法?](http://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set -in-bash) – Jens
Huh。つまり、* zshのみの構文がありますが、ここでもPOSIX sh構文が機能します。 –
明確にするために編集されました。 Bashの質問は標準的なzsh構文を提供しません。 – paulmelnikow