2015-05-15 34 views
2

我正在创建一个安装脚本,我想将安装的默认Python的版本与我需要运行的版本进行比较。目前,这里是我的代码:在bash中比较python -V输出用于Python版本检查

#!/bin/bash 
PYTHON="$(python -V)" 
if [[ "$PYTHON = 'Python 2.7.6' ]] 
then echo "Python is installed." 
else echo "Python is not installed." 
fi 

我一直得到的响应是没有安装Python,但也就是输出的时候我在命令python -V型。

任何帮助,非常感谢。先谢谢你。

+1

认为它应该是''if [[“$ PYTHON”=='Python 2.7.6']]' –

+0

@AvinashRaj,我认为纠正'if'会解决这个问题,但实际上并没有:'python -V'打印版本很好,但它返回一个空的结果。所以变量总是空的。 – Jahid

+0

你想检查python的存在或这个特定版本的python? – HuStmpHrrr

回答

2

看来,当你运行python -V,它打印的版本标准错误,而不是到stdout。因此,改变你的企图输出到一个变量捕捉到这一点:

PYTHON=$(python -V 2>&1) 

应该做的伎俩。另一种替代方法,这趋向于包括关于生成日期的其他信息,编译器等将是:

python -c 'import sys; print sys.version' 

,或者通过@chepner的建议:

python -c 'import sys; print sys.version_info' 

这两种需要少许附加解析以获取您想要/需要的特定信息。

+0

'sys.version_info'会更好,因为您可以以受控方式访问版本号的各个组件。 – chepner

+0

您给出的第一个答案完全达到了所需要的。谢谢。 –

-1

你可以改变你的代码是这样的:

#!/bin/bash 
PYTHON="$(python -V 2>&1)" 
if [[ "$PYTHON" = "Python 2.7.6" ]] 
then echo "Python is installed." 
else echo "Python is not installed." 
fi 
+0

虽然这让我知道Python已安装,但我需要知道安装的特定版本。我正在创建脚本来自动化Windows用户和Python 2.7的Jekyll的安装过程。*在Python 3. *中不适用。 –

+0

@JosephPreston,好吧,就像你自己的代码一样添加了另一个解决方案...... – Jahid

+0

@Jahid你对'exit'的解释和什么被送到'bash'“捕获标准输出并将它分配给一个变量”构造(即' $(...)')不正确。 – twalberg