簡體   English   中英

如果子進程以非零代碼退出,則退出bash腳本

[英]Exit bash script if subprocess exits with non-zero code

我在bash腳本中有這一行:

$ node $(node `dirname $0`/foo.js) "$@"  

在foo.js中,我有

if(x){
process.exit(0);
}
else{
process.exit(1);
}

我希望bash腳本中止/錯誤輸出,如果進程定義為

$(node `dirname $0`/foo.js)

以非零的退出代碼退出。

我怎樣才能做到這一點?

更新資料

如果要捕獲命令替換的退出代碼,請將輸出分配給變量。 分配不會更改$? ,因此它仍然包含替換的狀態。

output=$(node ...)
status=$?
(( status )) && exit 1

原始回復

您可以使用$?檢查退出代碼$?

node ...
(( $? )) && exit $?

或者,您可以在以下情況下直接使用它:

if ! node ... ; then exit 1 ; fi

或者,只是告訴bash在錯誤時退出:

set -e
node ...

如果需要,請使用set +e恢復正常行為。

我要解決此問題的方法是在運行完整命令之前添加以下行:

$(node `dirname $0`/foo.js); rc="$?"; if [ "$rc" -ne 0 ]; then exit; fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM