Bash脚本无法找到.JAR文件

时间:2019-03-07 03:59:46

标签: bash terminal sh minecraft

因此,我试图制作一个自动化的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标志并删除“ java version”行,从而能够手动编辑脚本并指定要下载的版本如果不使用当前的1.13版本。

理想上,我想脚本一旦运行,问我想使用哪个版本。如果我按Enter键,它将省略--rev标志和Java版本行,并下载当前版本(1.13),如果我指定一个版本(即“ 1.9”),它将运行export JAVA_HOME="/usr/libexec/java_home -v 1.8"行并添加--rev标志到exec行的末尾。

如果这没有任何意义,则本文介绍了如何在没有“自动脚本”的情况下通过终端执行我正在做的事情。

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

我希望此脚本能够正常工作,因为我会将其转发给其他服务器开发人员,这些服务器开发人员可以在日常开发中使用该脚本,而不必每次都需要在终端上运行多个命令建立服务器。

1 个答案:

答案 0 :(得分:2)

最简单的方法是采用一个可选参数:

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

这看起来有些笨拙,但这意味着可以像使用默认版本的my_script.sh或使用2.0版本的my_script.sh 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