OSX bash 脚本中的管道无法正常工作
OSX bash piping in script not working as I expect
为了获得 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 $?
这return是这个:
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 的 return 表示它没有错误,但即使打印了 "java -version" 的结果也没有找到匹配项。
我尝试了 grep 和几种不同的搜索模式,并尝试了 sed 和 aux,使用 Google 寻求帮助,结果相同。
我做错了什么?
java -version
写入标准错误,而不是标准输出,因此 grep
没有收到任何输入。
java -version 2>&1 | grep java
应该如你所愿。
为了获得 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 $?
这return是这个:
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 的 return 表示它没有错误,但即使打印了 "java -version" 的结果也没有找到匹配项。
我尝试了 grep 和几种不同的搜索模式,并尝试了 sed 和 aux,使用 Google 寻求帮助,结果相同。
我做错了什么?
java -version
写入标准错误,而不是标准输出,因此 grep
没有收到任何输入。
java -version 2>&1 | grep java
应该如你所愿。