변수가 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 호환 테스트는
입니다.어, 아니,'[[]]'는 (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
허. 즉, * zsh 전용 구문이지만 POSIX sh 구문도 여기에서 작동합니다. –
명확히하기 위해 편집 됨. Bash 질문은 표준 zsh 구문을 제공하지 않습니다. – paulmelnikow