ULogger.info("throwing out 666!");
System.exit(666);
bash包装:
eval ${COMMAND_TO_RUN}
ret_code=$?
printf "error code : [%d]" ${ret_code}
输出:
[2012-11-30 15:20:12,971][INFO ] throwing out 666!
error code : [0]
这是什么交易?谢谢…
[编辑]
${COMMAND_TO_RUN}是
((java -Xmx9000m -Dtoday_nix=20121128 -cp "/usr/lib/hadoop/conf" com.paypal.risk.ars.linking.task_fw.BaseRunnableProcess 3>&1 1>&2 2>&3) | tee /dev/tty) > batches_errors.log
最佳答案
您的问题出在您的COMMAND_TO_RUN中:
((java -Xmx9000m -Dtoday_nix=20121128 -cp "/usr/lib/hadoop/conf" com.paypal.risk.ars.linking.task_fw.BaseRunnableProcess 3>&1 1>&2 2>&3) | tee /dev/tty) > batches_errors.log
调用的最后一个程序是tee,它将以状态0退出,覆盖退出
java的价值.
您可以使用$PIPESTATUS,它是管道中的返回值数组.
例如:
$cat nonexistantFile | echo ; echo "e: $? p: ${PIPESTATUS[@]}"
预期产量:
e: 0 p: 1 0
cat将失败(退出代码1),echo将成功(退出代码0). $?将是0.
${PIPESTATUS [0]}将包含cat(1)的退出代码,${PIPESTATUS [1]}将包含echo(0)的退出代码.