Bash脚本无法找到.JAR文件

问题描述 投票:0回答:1

所以我正在尝试制作一个自动bash脚本来帮助构建某些版本的Minecraft Spigot服务器。为了“构建”服务器,您必须通过在终端中运行以下命令来反编译.jar文件。

export MAVEN_OPTS="-Xmx2G"

export JAVA_HOME="/usr/libexec/java_home -v 1.8"(除非你构建以前的版本,然后是当前的1.13版本,使用Java 11而不是Java 8),否则忽略此行

java -jar BuildTools.jar(可选:--rev标志可用于指示您要下载服务器的版本)

现在,这是我迄今为止提出的一个简单的“双击并完成”bash脚本。我对bash脚本的运行,编译,编写等都非常陌生。我得到的错误是“无法找到BuildTools.jar”,但是我的终端弹出一个我无法摆脱并仍然看到消息的阻止。一旦我点击确定,它就会关闭窗口。

#!/bin/sh
cd "$( dirname "$0" )"

export MAVEN_OPTS="-Xmx2G"

export JAVA_HOME="/usr/libexec/java_home -v 1.8"

exec java -jar BuildTools.jar --rev 1.8.8

我的主要目标是能够手动编辑脚本并通过更改--rev标志来指定我想要下载的版本,如果不使用当前的1.13版本,则删除“java版本”行。

理想情况下,我希望脚本运行一次,问我想要使用哪个版本。如果我点击输入它会省略--rev标志和java版本行,并下载当前版本(1.13),如果我指定一个版本(即“1.9”)它运行export JAVA_HOME="/usr/libexec/java_home -v 1.8"行并将--rev标志添加到exec的末尾线。

如果这没有任何意义,那么这篇文章解释了如何通过没有“自动脚本”的终端做我正在做的事情。

https://www.spigotmc.org/wiki/buildtools/

我想让这个脚本工作,因为我会将这个脚本转发给其他服务器开发人员,这些开发人员可以在他们的日常开发中使用该脚本,而不必在每次想要构建时通过终端运行多个命令服务器。

bash terminal sh minecraft
1个回答
2
投票

做这样的事情的最简单方法是采用一个可选参数:

java -jar BuildTools.jar --rev "${1-1.8.8}"

这可能看起来有点笨重,但这意味着脚本可以像my_script.sh一样使用默认版本或my_script.sh 2.0来使用版本2.0。

另一个简单的改进是为默认版本提取变量:

default_version='1.8.8'
java -jar BuildTools.jar --rev "${1-$default_version}"

你的shebang线使用/bin/sh,这是not the same as Bash。这可能会使您的脚本比使用Bash更轻松,但Bash现在非常普遍,您可以利用脚本中的Bash功能。例如:

  • 您可以使用readonly default_version声明默认版本变量常量。
  • 你可以更可靠地get the script path
© www.soinside.com 2019 - 2024. All rights reserved.