【发布时间】:2010-10-09 21:10:13
【问题描述】:
我正在从 Bash 脚本中运行一个 java 程序。 如果java程序抛出未经检查的异常,我想停止bash脚本,而不是让脚本继续执行下一条命令。
如何做到这一点?我的脚本如下所示:
#!/bin/bash
javac *.java
java -ea HelloWorld > HelloWorld.txt
mv HelloWorld.txt ./HelloWorldDir
【问题讨论】:
我正在从 Bash 脚本中运行一个 java 程序。 如果java程序抛出未经检查的异常,我想停止bash脚本,而不是让脚本继续执行下一条命令。
如何做到这一点?我的脚本如下所示:
#!/bin/bash
javac *.java
java -ea HelloWorld > HelloWorld.txt
mv HelloWorld.txt ./HelloWorldDir
【问题讨论】:
与汤姆·霍廷达成协议,
要检查 Java 程序的退出代码,请在 Bash 脚本中:
#!/bin/bash
javac *.java
java -ea HelloWorld > HelloWorld.txt
exitValue=$?
if [ $exitValue != 0 ]
then
exit $exitValue
fi
mv HelloWorld.txt ./HelloWorldDir
【讨论】:
#!/bin/bash
function failure()
{
echo "$@" >&2
exit 1
}
javac *.java || failure "Failed to compile"
java -ea HelloWorld > HelloWorld.txt || failure "Failed to run"
mv HelloWorld.txt ./HelloWorldDir || failure "Failed to move"
您还必须确保 java 以非零退出代码退出,但这很可能是未捕获的异常。
如果命令失败,基本上退出shell脚本。
【讨论】:
捕获异常,然后调用 System.exit。检查 shell 脚本中的返回码。
【讨论】: