Intereting Posts
xinput mouse device: отдельные x и y чувствительности Как разрешить доступ пользователей к определенному файлу в ограниченном каталоге? Как отображать цифровые часы на мониторе поверх всего? Организуйте локальные сборки Что не так с экранированной новой строкой в ​​этой команде sed? объединение двух файлов в соответствии с указанной строкой Нерестовые процессы в стеке работ Выполнение nmap в сети Как хранение регулярного выражения в переменной оболочки позволяет избежать проблем с цитированием символов, которые являются специальными для оболочки? Чрезмерно высокое использование диска замораживает мой сервер Преобразование строк новой строки в нуль-ограничение при использовании хвоста Несколько вкладок в PuTTY Как заставить скрипт использовать больше ресурсов? Как установить местоположение файла дампа ядра (и имя)? Формат Mutt и maildir

Проверка основной версии Java в скрипте bash

Я только что установил Кафку, следуя инструкции. Не запускается из-за ошибки скрипта sh :

 $ sudo kafka-server-start.sh /etc/kafka.properties /opt/Kafka/kafka_2.12-1.1.0/bin/kafka-run-class.sh: line 252: [[: 10 2018-04-17: syntax error in expression (error token is "2018-04-17") [0.000s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:/opt/Kafka/kafka_2.12-1.1.0/bin/../logs/kafkaServer-gc.log instead. Unrecognized VM option 'PrintGCDateStamps' Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 

проверяющая строка 252:

 if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] ; then 

Я добавил echo чтобы получить больше информации:

 JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p') echo "JAVA_MAJOR_VERSION: $JAVA_MAJOR_VERSION" if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] ; then 

выход изменяется с помощью:

JAVA_MAJOR_VERSION: 10 2018-04-17

моя ява:

 $ java -version openjdk version "10.0.1" 2018-04-17 

Вопрос

Как я должен изменить JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p') чтобы исправить мою Кафку стартер?

Одним из решений является удаление даты с конца с помощью cut . Этот подход приведет к:

 JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p' | cut -d' ' -f1) 

Этот подход разбивает символ пробела (-d ”) и занимает первое поле. Исходя из введенных данных, это приведет к удалению добавленной даты openjdk.