在將Google Shell 樣式指南應用于某些 bash 代碼時,我了解到我并不完全知道如何確定函式的退出狀態。特別是,我想知道是否有任何成功的 bash 函式回傳狀態 0,或者是否只有某些命令確保它回傳狀態 0。
給出的例子:
#######################################
# Delete a file in a sophisticated manner.
# Arguments:
# File to delete, a path.
# Returns:
# 0 if thing was deleted, non-zero on error.
#######################################
function del_thing() {
rm "$1"
}
描述rm顯然導致狀態 0 的操作。但是,我想知道是否所有其他不會導致錯誤的命令也回傳狀態 0。(不包括設定特定回傳狀態的特定命令,如exit 42)。
為了找到這一點,我想檢查某些函式的回傳狀態。然而,我還不完全知道如何做到這一點。因此,我想問:如何列印/查看/檢查函式的回傳狀態?
uj5u.com熱心網友回復:
如何列印/查看/檢查退貨狀態
該變數$?保留上一個命令的退出狀態。
literally anything
echo "$?"
del_thing
echo "$?"
注意:$?檢查失敗或成功時不要使用。使用if,就像if ! del_thing; then echo "it failed"; fi.
注意:不要function與(). 只需使用name() { .. },無需function. 請參閱https://wiki.bash-hackers.org/scripting/obsolete。(https://github.com/google/styleguide/pull/624 ..)
我想知道所有其他不會導致錯誤的命令是否也回傳狀態 0
0退出狀態被視為成功。非零退出狀態被視為失敗。例如,if運算式檢查命令的退出狀態是否為零 - if anything; then echo "anything exited with zero exit status"; fi。
函式具有執行的最后一個命令的退出狀態。通常,任何東西都有最后執行的命令的退出狀態。的退出狀態del_thing的功能是相同的的退出狀態rm命令,因為rm命令是在函式中執行的最后一件事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397140.html
