我最近偶然發現了一些 shell 腳本代碼,它重復做同樣的事情,我想知道這是否可以簡化一些。
基本上在定義的函式中,每次呼叫后都會檢查回傳碼。如果它不為 0,則完成一些輸出并且函式過早退出。在這種情況下,我們故意使用return來轉義函式,但不想使用 exit 停止整個程序。
例如:
function _myFunc {
typeset ret=0
_myFirstSubFunc "TEST"
ret=$?
if [[ $? -ne 0 ]]; then
echo "myFirstSubFunc produced an error: $ret"
return $ret
fi
_mySecondSubFunc "TEST"
ret=$?
if [[ $? -ne 0 ]]; then
echo "mySecondSubFunc produced an error: $ret"
return $ret
fi
return $ret
}
我想減少這個重復的代碼
- 檢查回傳碼
- 如果回傳碼為 != 0,則列印出一些資訊
- 停止當前功能繼續
一次呼叫,因此代碼不會因為這種檢查而混亂。如果先前的呼叫成功,則函式的執行應該繼續。
通常,當我想中止(退出)整個程序時,一個函式會做到這一點。但是,當發生錯誤時應該回傳一個值時,事情會變得(至少對我而言)有點棘手。
我嘗試使用陷阱或別名,不幸的是沒有成功。此外,我僅限于 ksh88,因此我似乎無法在呼叫后使用 || 來使用某些條件。
有什么想法嗎,如果還有其他東西可以減少這種繁瑣的錯誤處理?
謝謝!
uj5u.com熱心網友回復:
function orReport {
if "$@"; then
return
else
ret=$?
echo "$1 produced an error: $ret"
return "$ret"
fi
}
function _myFunc {
orReport _myFirstSubFunc "TEST" || return
orReport _mySecondSubFunc "TEST" || return
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491443.html
標籤:壳
