在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
嗯! 我做错了什么?
答案 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