이것은 zsh -f
:
Fereidoons-MacBook-Pro% local a=$(jaja) && echo bad
zsh: command not found: jaja
bad
Fereidoons-MacBook-Pro% a=$(jaja) && echo bad
zsh: command not found: jaja
Fereidoons-MacBook-Pro%
왜 local
오류 처리를 엉망으로 만드나요?
답변1
zsh
내장 기능 에 대한 매뉴얼 에서 typeset
(이것은 local
특별한 경우입니다):
매개변수 할당문과 달리
typeset
명령 대체와 관련된 할당의 종료 상태는 명령 대체의 종료 상태를 반영하지 않습니다. 따라서 명령 대체 오류를 테스트하려면 매개변수 선언과 초기화를 분리하세요.# WRONG typeset var1=$(exit 1) || echo "Trouble with var1" # RIGHT typeset var1 && var1=$(exit 1) || echo "Trouble with var1"
귀하의 경우:
$ unset a
$ local a=$(jaja) && echo bad
zsh: command not found: jaja
bad
$ unset a
$ local a && a=$(jaja) && echo bad
zsh: command not found: jaja