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