bigyan sahoo Ответов: 1

Как я могу получить Java и .Объем информации о версии в shell-скрипт


Привет,
Я новичок в сценарии оболочки. Я создаю один файл сценария и пытаюсь запустить его в Windows 10. Для этого я установил ubuntu. Когда я запускаю файл bash без области действия функции, он работает. В качестве примеров

var=$(java -version 2>&1 | awk -F '"' 'NR==1 {print $2}')
echo $var


Но если я вызываю их внутри функции, то она не работает.

Что я уже пробовал:

#!/bin/bash
myfunc()
{
  echo "$(java -version 2>&1)" | grep "java version" | awk '{ print substr($3, 2, length($3)-2); }'
}



myfunc

Richard MacCutchan

Я отмечаю, что код в myfunc отличается от кода, который работает. Попробуйте запустить его шаг за шагом вне функции, чтобы увидеть, какая часть выходит из строя.

1 Ответов

Рейтинг:
1

k5054

По умолчанию java - установка для ubuntu-это openjdk, а не версия от Oracle. Это означает, что java -version показывать

$ java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu218.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu218.04.1, mixed mode, sharing)

grep "java version" не собирается находить совпадение, поэтому функция ничего не возвращает.

Указывает на Ричарда за то, что он указал на то, что ваш код отличается между mycode и var = версии.


Richard MacCutchan

Указывает на вас для исчерпывающего объяснения. У меня нет Java в моем WSL Ubuntu, поэтому я не смог полностью протестировать его.