Получить версию Java в csh (c shell)
Мне нужно получить версию Java, используя скрипт c-shell. Мне нужно будет поместить его в переменную и впоследствии использовать для некоторых манипуляций и тестов. в bash эта команда работает:
local javaVersion=$(java -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q')
но в c-shell, когда я пытаюсь:
set javaVersion=$(java -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q')
я получил
"Неоднозначное перенаправление вывода."
ошибка.
Да, я должен сделать это в c-shell, а не в Bash или любом другом языке.
Я искал этот и другие форумы в Интернете, но не нашел ничего полезного.
Благодарю.
1 ответ
Вот способ, который должен работать для вас так же, как и для меня:
> set javaVersion=`java -version |& sed 's/.* version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q'`
> echo $javaVersion
18
Изменения:
замещать
$( command )
от`command`
; первый является рекомендуемым текущим синтаксисом оболочки POSIX, но никогда не был реализованcsh
,замещать
2>&1 |
от|&
; первый характерен для оболочки Bourne, последнийcsh
конкретный.замещать
java version
от.* version
; это не является строго необходимым, но облегчило мои тесты какjava -version
возвращаетсяopenjdk version...
на моей машине нетjava version...