Bash

bash函式中的隱式返回?

  • February 23, 2022

假設我有一個像這樣的 bash 函式:

gmx(){
 echo "foo";
}

這個函式會隱式返回命令的退出值echo,還是需要使用 return?

gmx(){
 echo "foo";
 return $?
}

我假設 bash 的工作方式,bash 函式的最終命令的退出狀態是“返回”的狀態,但不是 100% 確定的。

return從 shell函式或“點腳本”(源腳本)*顯式返回。*如果return未執行,則在 shell 函式或點腳本的末尾進行隱式返回。

如果return不帶參數執行,則相當於返回最近執行的命令的退出狀態。

這就是return在所有 POSIX shell 中的工作方式。

例如,

gmx () {
 echo 'foo'
 return "$?"
}

因此等價於

gmx () {
 echo 'foo'
 return
}

這與

gmx () {
 echo 'foo'
}

一般來說,您很少需要使用它$?。僅當您需要將其保存以備將來使用時才需要它,例如,如果您需要多次調查其值(在這種情況下,您會將其值分配給一個變數並對該變數執行一系列測試)。

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