OS X上的JVM始终以状态0退出(在Bash脚本中捕获)?

时间:2016-02-09 01:07:37

标签: java macos bash exit

我有一个非常简单的Java类,除了:

之外别无其他
public class TestMain {
  public static void main(String[] args) {
    System.out.println("Running!");
    System.exit(1111);
  }
}

,打包到TestOSX.jar文件中。

在Windows上我可以运行上面的代码段并显示%ERRORLEVEL%具有预期值,我在OS X上得到了不同的结果。

鉴于test.sh包含:

#!/bin/bash

"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -jar TestOSX.jar 
wait $!
updater_exit_val=$?
echo $updater_evit_val

,我总是打印0。

设置:OS X 10.11.1,Oracle Java 8 u60。

我在这里错过了什么微不足道的细节?

1 个答案:

答案 0 :(得分:1)

您不会使用&将您的java进程发送到后台。因此,{java}进程退出后执行wait。它无法找到您尝试等待的进程,因为它已经退出并因此而返回代码0。 $?返回最后一个命令的返回码(在您的情况下为wait)。

您可以从脚本中删除等待,也可以通过在结尾处添加&将您的java进程发送到后台。