Zsh

zsh:分配中的錯誤處理不一致

  • August 4, 2019

這是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搞砸錯誤處理?

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

引用自:https://unix.stackexchange.com/questions/533834