Shellzsh:如何在不觸發
zsh:如何在不觸發set -e
的情況下儲存語句的返回碼?
假設我想擷取的返回碼
(exit 56)
如果我使用
set -e
或zerr
處理程序,我不能再這樣做:(exit 56) ret=$?
如果我使用
(exit 56) || true
to Avoidset -e
,返回碼將變為零,我無法再得到它。那麼如何獲取返回碼呢?
您可以
&& true
改用:set -o errexit (exit 50) && true echo code: $?
雖然你也可以這樣做:
set -o errexit if (exit 50) then else echo failed with code $? fi
或者:
set -o errexit (exit 50) || { code=$? echo failed with code $code # and whatever else you want to do with $code }
這個想法是,
errexit
只要將失敗的命令用作條件,它就會被取消,但如果你這樣做(exit 50) && true
,那麼之後的退出程式碼將始終為 0。(就個人而言,我避免
errexit
並且更喜歡手動進行適當的錯誤處理)。