因此,我试图制作一个自动化的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/
我希望此脚本能够正常工作,因为我会将其转发给其他服务器开发人员,这些服务器开发人员可以在日常开发中使用该脚本,而不必每次都需要在终端上运行多个命令建立服务器。
答案 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
声明默认版本变量常量。