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

2023-12-15

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

ULogger.info("throwing out 666!");
System.exit(666);

bash 包装器:

eval ${COMMAND_TO_RUN}
ret_code=$?
printf "error code : [%d]" ${ret_code}

output:

[2012-11-30 15:20:12,971][INFO ] throwing out 666!
error code : [0]

这是怎么回事?谢谢...

[EDIT]

The ${COMMAND_TO_RUN} is

((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) and ${PIPESTATUS[1]}用于回声的一个(0).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bash eval 未检测到 System.exit 返回代码 的相关文章

随机推荐