如果子进程以非零代码退出,则退出bash脚本

时间:2016-11-23 21:34:16

标签: node.js bash

我在bash脚本中有这一行:

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

在foo.js中,我有

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

如果由

定义的进程,我希望bash脚本中止/错误输出
$(node `dirname $0`/foo.js)

以非零退出代码退出。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

更新

如果要捕获命令替换的退出代码,请将输出分配给变量。分配不会更改$?,因此它仍包含替换的状态。

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

原始回复

您可以使用$?检查退出代码:

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

或者,您可以直接在条件中使用它:

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

或者,告诉bash退出错误:

set -e
node ...

如果需要,请使用set +e恢复正常行为。

答案 1 :(得分:0)

我解决这个问题的方法是在运行完整命令之前添加这一行:

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