HappyFace Asked: 2019-08-05 08:47:16 +0800 CST2019-08-05 08:47:16 +0800 CST 2019-08-05 08:47:16 +0800 CST zsh:分配中的错误处理不一致 772 这是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 variable 1 个回答 Voted Best Answer Kusalananda 2019-08-05T08:57:41+08:002019-08-05T08:57:41+08:00 从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
从
zsh
关于typeset
内置的手册(这local
是一个特例):在你的情况下: