Exit

在bash中,使用本地時如何檢索子shell的退出程式碼

  • December 28, 2019

這個問題與其他問題很接近 -我可以從使用 $(command) 啟動的子 shell 中獲取退出程式碼嗎?

但是,我沒有發現任何解決方案可以讓我在使用 local 和 eval 時從子 shell 獲取退出程式碼,如本例所示……

test() {
> local WHY="$(eval "echo 'test'"; exit 3)"; echo $?
> }
test
0

這很簡單:不要使用單個命令,而是拆分:

test() {
   local why
   why="$(eval "echo 'test'"; exit 3)"; echo $?
}
test
3

問題是這local是一個帶有自己退出程式碼的內置命令…如果您在分配變數的同時避免該命令,您將從子shell 中獲得退出程式碼。

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