脚本中的OSX bash管道不能按我的预期工作

时间:2018-05-17 16:17:52

标签: bash pipe piping macos-high-sierra

要获取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

根据手册页grep的返回表明它没有错误,但发现没有匹配,所以打印出“java -version”的结果。

我尝试过使用一些不同的搜索模式grep并尝试使用sed和aux,使用Google寻求帮助,以及相同的搜索结果。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

java -version写入标准错误,而非标准输出,因此grep不接收任何输入。

java -version 2>&1 | grep java

应该做你期望的事。