问题描述
我正在从Shell脚本运行Java程序。我需要根据是否在Java程序中发生异常或运行是否成功,在同一shell脚本中执行下一步。我知道Java不会运行任何程序。我们如何在shell脚本中做到这一点? 我知道我们可以在日志中打印一些字符串并将其grep来检查状态。有什么更好的方法吗? 即使我可以使用grep获得一些优雅的方法来做到这一点也很好。
解决方法
如果Java程序由于异常而终止,则JVM将以错误状态1
而不是通常的成功状态0
退出。例如,由于NullPointerException,该程序退出:
shell$ cat Throw.java
public class Throw {
public static void main(String[] args) {
String s = null;
System.out.println(s.length());
}
}
shell$ java Throw 2>/dev/null; echo $?
1
例如,您可以在shell if语句中使用退出状态。这将打印boo
:
if java Throw 2>/dev/null ; then
echo woo
else
echo boo
fi
如果要设置除1以外的退出代码,请使用System.exit(int status)
函数。