所以我正在尝试制作一个自动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/
我想让这个脚本工作,因为我会将这个脚本转发给其他服务器开发人员,这些开发人员可以在他们的日常开发中使用该脚本,而不必在每次想要构建时通过终端运行多个命令服务器。
做这样的事情的最简单方法是采用一个可选参数:
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
声明默认版本变量常量。