我刚刚将工作的 Windows 批处理脚本 (.bat) 迁移到 Unix Shell。通常它工作得很好,但是,我刚刚意识到在 Unix 中返回的错误级别是错误的。
从我所读到的,%errorlevel%
Windows 中的命令“翻译”到$?
Unix 中。但是,当在脚本中调用的 Java 应用程序执行期间发生错误时,Windows Batch 脚本会返回错误级别 4。
Unix$?
返回 0 而不是 4,这会导致我的自动错误检查将实际有问题的应用程序运行解释为成功。
如何让 Unix 返回正确的错误级别?据我所知,当发生错误时,它实际上应该返回> 0 的值......
这是我的shell脚本:
JAVA_HOME="/usr/lib/jvm/java"
EXECUTABLE="my.java.executable"
BASEDIR=`dirname $0`
cd $BASEDIR
LOCAL_CP=$BASEDIR
for f in `find $BASEDIR/lib -type f -name "*.jar"` `find $BASEDIR/lib -type f -name "*.zip"`
do
LOCAL_CP=$LOCAL_CP:$f
done
# various variables being assigned
VMARGS="-various -vmargs -assigned -here"
$JAVA_HOME/bin/java $VMARGS -cp $LOCAL_CP $EXECUTABLE $various_variables
echo $status
echo ERRORLEVEL: $?
Run Code Online (Sandbox Code Playgroud)
以及来自 Java …