当java程序出现异常(从shellscropt运行java程序)时,如何仅打印退出代码?
我有一个java程序,它抛出了一些异常,我尝试从shell脚本执行它,并在java程序失败时打印0,在成功执行时打印1。但它也将异常打印到控制台上。我只想打印退出代码。如何做?任何建议都将不胜感激 下面是我的Java程序和脚本文件 Test.Java当java程序出现异常(从shellscropt运行java程序)时,如何仅打印退出代码?,java,bash,shell,Java,Bash,Shell,我有一个java程序,它抛出了一些异常,我尝试从shell脚本执行它,并在java程序失败时打印0,在成功执行时打印1。但它也将异常打印到控制台上。我只想打印退出代码。如何做?任何建议都将不胜感激 下面是我的Java程序和脚本文件 Test.Java public class EchoTest { public static void main (String args[]) { System.out.println ("scuccess Prasad Bezavada "+(2
public class EchoTest {
public static void main (String args[]) {
System.out.println ("scuccess Prasad Bezavada "+(2/0));
}
}
sh(脚本文件)
把下面的东西拿出来
$sh Test.sh
Exception in thread "main" java.lang.ArithmeticException: / by zero
at EchoTest.main(EchoTest.java:3)
0
$
预期输出如下(即只想跳过异常消息)
$sh Test.sh
0
$试试这个
java Test 2> /dev/null
if [ $? -eq 0 ]
then echo "1"
else echo "0"
fi
你必须抓住例外。之后,您将能够准确地输出您想要的内容。以你为例:
public class EchoTest {
public static void main (String args[]) {
try{
System.out.println ("scuccess Prasad Bezavada "+(2/0));
} catch (Exception e){
// doing nothing is ok for your intended behaviour
}
}
}
首先,您希望Java程序返回一个值(1或0)。 在我们的例子中,我们将考虑如果抛出异常,将返回1,否则返回0。此外,异常将被隐藏(这是一种不好的做法。至少当您不愿意在屏幕上显示异常时,您应该始终记录异常) 完成后,您需要做的就是获取java的输出代码
java Test
output = $?
# do some logic here..
if [[ $output -eq 0 ]]; then
echo "executed"
else
echo "exception thrown"
fi
最后,根据您实际请求的忽略异常情况的执行情况,这确实会返回1或0。警告一句:每一个其他系统都会期望成功为0,而一系列错误代码的任何其他值是shi@t_thirupathi,感谢您的响应,它只返回0(零)无论是成功还是失败,那都是因为美元?保存重定向(>)的成功代码,而不是javasentence@prasad这意味着运行java测试还有一些其他问题,因此它总是以非零方式退出(在这种情况下,脚本输出0)。@malarres否,重定向不重要。$?具有最后一个命令的退出代码,而重定向不是命令。那么,我的另一个答案比需要的更复杂。现在,您可能还想考虑甚至捕获<代码>可投掷< /代码>,而不是<代码>异常< /代码>,因为它也包含“代码>错误< /代码> s(包括例如“代码> OutOfMeMyRebug < /代码>”)。
public class EchoTest {
public static void main (String args[]) {
try {
System.out.println ("scuccess Prasad Bezavada "+(2/0));
System.exit(0);
}
catch (Exception e) {
// log your exception here
System.exit(1);
}
}
}
java Test
output = $?
# do some logic here..
if [[ $output -eq 0 ]]; then
echo "executed"
else
echo "exception thrown"
fi