如何检查字符串是否是bash中命令“python --version”的一部分?

时间:2016-10-10 05:18:37

标签: bash

在bash中,我想检查是否安装了Python 2.7。在搜索时我发现了这个:How do I test (in one line) if command output contains a certain string?

在bash中,我有这个:

python --version
Python 2.7.11

所以我试过这个:

[[ $(python --version) =~ "2.7" ]] || echo "I don't have 2.7"
Python 2.7.11
I don't have 2.7

...我觉得很奇怪,正如我所期望的那样。

我也试过这个:

if [[ $(python --version) =~ *2.7* ]]
    then
        echo "I have 2.7"
    else
        echo "I don't have 2.7"
fi

...导致:

Python 2.7.11
I don't have 2.7

嗯! 我做错了什么?

2 个答案:

答案 0 :(得分:1)

python --version命令输出到stderr

您可以在测试之前将stderr重定向到stdout

if [[ $(python --version 2>&1) =~ 2\.7 ]]
    then
        echo "I have 2.7"
    else
        echo "I don't have 2.7"
fi

答案 1 :(得分:1)

您可以通过以下方式进行操作。您可以先从python命令检查是否安装了which,然后捕获python --version的输出

if which python > /dev/null 2>&1;
then
    if [[ $(python --version 2>&1) == *2\.7\.11 ]]; then
       echo "Python version 2.7.11 is installed."
    fi 
else
    echo "No Python executable is found."
fi