如您所知,設置-e對於在執行命令時發現任何失敗非常有用。但是我發現它使用起來很細膩,我不知道如何在下列情況下使用它:如何在命令替換中使用檢測失敗
==============第一個示例====== ==========================
set -e
function main() {
local X1="$(exp::notdefined)"
echo "Will reach here : ${LINENO}"
X2="$(exp::notdefined)"
echo "Will not reach here : ${LINENO}"
}
main
==============第二個例子= ===============================
set -e
function exp::tmp() {
echo "Now '$-' is "$-" : ${LINENO}"
false
return 0
}
function main() {
X1="$(exp::tmp)"
echo "Will reach here : ${LINENO}. '\$X1' : ${X1}"
X2="$(set -e ; exp::tmp)"
echo "Will not reach here : ${LINENO}"
}
main
============ ===================
第一個例子表明,如果我們在本地va上使用命令替換riable,那麼即使找不到命令,它也不會失敗。我不知道如何檢測這類故障。
第二個例子顯示,如果bash選項(-e)不會傳播,除非我們在命令大括號中調用set -e。有沒有更好的方法來做到這一點?
如果David是對的,你可以將'local'變量聲明和定義分成兩行,從第二個語句中獲取預期的錯誤代碼。 – jpaugh