[英]Evaluation of exit code fails in bash
我的应用程序以错误代码 136 退出,我想确保它确实如此。
为此,我正在执行 set +e 以继续执行,然后是一个条件:
> set +e
> java -jar myjar.jar
> if [ $? -eq 136 ]; then echo success; exit 0; else echo fail; exit 1; fi
这总是最终打印以下 output:
fail
set +e 是否以任何方式修改退出代码? 为什么即使我以 136 退出,它还是零?
我也试过字符串比较没有成功:
编辑:
我根据第一个答案和评论修改了它,但退出代码仍然不正确:
> java -jar myjar.jar
> EXIT_CODE=$?
> if [ $EXIT_CODE == 136 ]; then echo success; exit 0; else echo fail; exit 1; fi
我尝试使用不同的退出代码,例如 1 或 126,但它不起作用。
我还做了以下事情:
> java -jar myjar.jar
> EXIT_CODE=$?
> echo $EXIT_CODE
结果为 0(我如何退出我的应用程序并不重要)
我的应用程序中的退出代码如下:
if (mycondition) {
logger.log(LogLevel.WARN, "Exiting with error code 126");
System.exit(126);
} else {
logger.log(LogLevel.WARN, "Exiting with error code 0");
System.exit(0);
}
即使 mycondition 为真,shell 中的退出代码也是 0
$?
echo 0 作为echo success
命令执行成功,因此$?
在echo $?
设置为 0。
要回显sh mycommand
的退出状态,要么交换echo success && echo $?
echo $? && echo success
echo $? && echo success
或将sh mycommand
的退出代码保存在if
-条件之前的变量中(并回显变量)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.