我在bash脚本中有这一行:
$ node $(node `dirname $0`/foo.js) "$@"
在foo.js中,我有
if(x){
process.exit(0);
}
else{
process.exit(1);
}
如果由
定义的进程,我希望bash脚本中止/错误输出$(node `dirname $0`/foo.js)
以非零退出代码退出。
我该怎么做?
答案 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