zsh: 작업에서 일관되지 않은 오류 처리

zsh: 작업에서 일관되지 않은 오류 처리

이것은 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

관련 정보