我试图编写一个bash脚本来测试python版本.但是,我发现python --versionpython 2表现得很奇怪,因为我无法使用任何工具处理它的输出.我在Mac OS(10.13.5)和AWS Linux(GUN/Linux#1 SMP Fri Feb 16 00:18:48 UTC 2018)上测试了相同的脚本.所以我认为这个问题与python 2有关.
脚本和相应的输出是:
$ echo $(python --version) | awk '{print $2}'
> Python 2.7.10
Run Code Online (Sandbox Code Playgroud)
但输出应该是2.7.10.
$ echo $(python --version) > weird.txt
> Python 2.7.10
$ cat weird.txt
>
Run Code Online (Sandbox Code Playgroud)
因此输出也不能写入文件.
测试python3的相同脚本有一个完全不同的结果
$ echo $(python3 --version) | awk '{print $2}'
> 3.6.5
Run Code Online (Sandbox Code Playgroud)
但python3的输出可以写入文件.
$ echo $(python3 --version) > weird.txt
$ cat weird.txt
> Python 3.6.5
Run Code Online (Sandbox Code Playgroud)
我发现这种差异的原因是python --version不输出正常的字符串或任何东西.也许它调用另一个命令来输出结果??? 因此结果不能被当前的过程捕获?(这里只是猜测)
任何人都可以帮我弄清楚为什么这里有区别?可能有百万种方法来测试python版本.但我对这里发生的事情非常好奇.
感谢所有的答复.刚刚找到一个有用的答案解释为什么python -V输出到stderr: 为什么python打印版本信息到stderr?
Python的输出版本标准错误(错误)根据高达3.3版本发行18338和注意这里,所以相应地重定向:
$ echo $(python --version 2>&1) | awk '{print $2}'
2.7.14
Run Code Online (Sandbox Code Playgroud)
命令替换是不必要的,这可以写成:
$ python --version 2>&1 | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |