繁体   English   中英

退出代码评估在 bash 中失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM