加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – bash eval未检测到System.exit返回码

发布时间:2020-12-14 19:22:50 所属栏目:Java 来源:网络整理
导读:挣扎了一个小时 java代码: 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] 这是

挣扎了一个小时…… java代码:

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)的退出代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读