【问题标题】:OSX bash piping in script not working as I expect脚本中的 OSX bash 管道无法按预期工作
【发布时间】:2018-10-28 00:02:16
【问题描述】:

为了获得 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 寻求帮助,结果相同。

我做错了什么?

【问题讨论】:

    标签: bash pipe piping macos-high-sierra


    【解决方案1】:

    java -version 写入标准错误,而不是标准输出,所以grep 没有收到任何输入。

    java -version 2>&1 | grep java
    

    应该做你期望的。

    【讨论】:

    • 这确实在我脑海中闪过,应该检查一下。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 2012-05-10
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多