Скрипт Bash не может найти файл .JAR - PullRequest
0 голосов
/ 07 марта 2019

Поэтому я пытаюсь создать автоматический сценарий 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 flag & java version и загружает текущую версию (1.13), если я указываю версию (то есть «1.9»), он запускает строку export JAVA_HOME="/usr/libexec/java_home -v 1.8" и добавляет флаг --revдо конца строки exec.

Если это не имеет никакого смысла, вот статья, объясняющая, как делать то, что я делаю, через терминал без «автоматического сценария».

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

Я бы хотел, чтобы этот скрипт работал, поскольку я перешёл бы этот сценарий другим разработчикам серверов, которые могли бы использовать сценарий в своей повседневной разработке и не должны запускать несколькоКоманды через терминал каждый раз, когда они хотят построить сервер.

1 Ответ

2 голосов
/ 07 марта 2019

Самый простой способ сделать что-то подобное - это взять один необязательный аргумент:

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, что не совпадает с Bash .Это может сделать ваш сценарий немного более переносимым, чем использование Bash, но сейчас Bash очень распространен, и вы можете использовать функции Bash в своем сценарии.Например:

  • Вы можете объявить константу переменной версии по умолчанию с помощью readonly default_version.
  • Вы можете получить путь к сценарию более надежно.
...