shell 脚本等待 Java JAR 文件完成



我在Mac OS X 10.8.2上

我有一个简单的 bash 脚本执行一个 jar 文件(一个简单的 hello world gui 程序,带有一个窗口)

#!/bin/sh
if ls /Applications/javahello.jar >& /dev/null ; then
    echo "File exists."
     java -jar /Applications/javahello.jar
     exit 0 
else
     echo "File doesn't exist."
     exit 1
fi

问题是脚本执行 jar,弹出一个窗口,终端窗口保持"占用"状态,并显示"文件存在"消息。 它永远不会完成其执行。直到我更精确地手动终止 Java 程序

我需要能够在这个 bash 脚本中执行 java 程序,使脚本退出而无需等待 java 程序完成运行。

这将发生在将 jar 文件复制到/应用程序/文件夹的安装程序包的末尾...按原样,安装程序永远不会完成,显然正在等待 shell 脚本完成其执行。

只需将java过程放在后台即可&.

#!/bin/sh
if ls /Applications/javahello.jar >& /dev/null ; then
  echo "File exists."
  java -jar /Applications/javahello.jar &
  exit 0 
else
  echo "File doesn't exist."
  exit 1
fi

此外,您无需ls即可判断文件是否存在:

#!/bin/sh
if [ -f /Applications/javahello.jar ]; then
  echo "File exists."
  java -jar /Applications/javahello.jar &
  exit 0 
else
  echo "File doesn't exist."
  exit 1
fi

此外,由于您两次使用文件名,如果您编辑脚本以更改文件名或复制以运行不同的 jar 文件或其他任何内容,您可能会在两个文件名不同的地方出现拼写错误。 shell 参数将解决此问题,因此它不会发生:

#!/bin/sh
jar=/Applications/javahello.jar
if [ -f "$jar" ]; then
  echo "File exists."
  java -jar "$jar" &
  exit 0 
else
  echo "File doesn't exist."
  exit 1
fi

相关内容

  • 没有找到相关文章

最新更新