[英]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.