【问题标题】:Pipeline doesn't seem to have any effect in BashPipeline 在 Bash 中似乎没有任何作用
【发布时间】:2021-06-30 03:00:26
【问题描述】:

谁能解释一下为什么会这样

python -V | awk '{print $2}'

返回这个

Python 2.7.5                             

而不是

2.7.5

如何只返回没有“Python”的版本号?

【问题讨论】:

    标签: python bash


    【解决方案1】:

    如果你跑了

    python -V >/dev/null
    

    你会注意到你仍然得到输出!显然,python -V 将其输出打印到标准错误,而不是标准输出。

    在类似 bourne 的 shell 中,这应该可以工作:

    python -V 2>&1 | awk '{print $2}'
    

    【讨论】:

    • 不错的收获。事实证明,这仅适用于 Python 2,Python 3 使用标准输出。
    • @bereal:多年的 Un*x 经验让我深有体会,当我的过滤器拒绝过滤时,通常是因为我过滤了错误的流。 :)
    • @bereal:顺便说一句,这是一个不错的元数据;我什至没有注意到我正在使用 Python 2 进行测试!
    • @Ture 您的 python 打印版本,没有注意到您使用 2 进行的测试? ?
    • @Nearoo:我想我只是在看输出的形状,而不是实际的内容! :)
    【解决方案2】:

    如何使用纯 python 命令本身(我需要在其间用点格式化它)

    python -c 'import sys; print sys.version_info[0],sys.version_info[1],sys.version_info[2]'
    

    或者根据克里斯的评论使用:

    python -c 'import sys; print(".".join(map(str, sys.version_info[:3])))'
    

    【讨论】:

    • 可以说,这是正确的做法。这有点愚蠢,需要更多的打字才能以正确的方式完成......
    • @TurePålsson 可以缩写为python -c 'import sys; print(".".join(map(str, sys.version_info[:3])))'
    • @Chris_Rands,感谢 Chris 告知,我现在在解决方案中添加了这个,干杯。
    • ++ 用于使用sys.version_info
    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多