OSX Bash трубопровод в сценарии не работает, как я ожидаю - PullRequest
0 голосов
/ 17 мая 2018

Чтобы получить версию Java, я запускаю это в bash (что мне действительно нужно, это 1.8 или 1.8.0_171)

$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

В моем тестовом скрипте было бы просто получить первую строку, поэтому я выполняю это:

java -version | grep java 
echo return is $?

, который возвращает это:

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
return is 1

В соответствии с man-страницей, возвращаемая grep указывает, что она не имела ошибок, но не нашла совпадений, даже если результаты "java -version" напечатаны.

Я пробовал grep с несколькими различными шаблонами поиска и пробовал sed и aux, используя Google для получения помощи, а также с теми же результатами.

Что я делаю не так?

1 Ответ

0 голосов
/ 17 мая 2018

java -version пишет в стандартную ошибку, а не в стандартный вывод, поэтому grep не получает никакого ввода.

java -version 2>&1 | grep java

должен делать то, что вы ожидаете.

...