gpt4 book ai didi

macos - shell 脚本等待 java jar 文件完成

转载 作者:行者123 更新时间:2023-12-04 05:23:27 28 4
gpt4 key购买 nike

我使用的是 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 文件复制到/Applications/文件夹的安装程序包的末尾......

最佳答案

只要把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

关于macos - shell 脚本等待 java jar 文件完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463250/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com