通过管道传输到grep的python版本返回代码1

通过管道传输到grep的python版本返回代码1,python,linux,bash,shell,Python,Linux,Bash,Shell,我想检查一下python的当前版本是否是我在bash脚本中期望的版本 python --version | grep --quiet 'Python 2.7.12 :: Continuum Analytics' if [ $? == 0 ]; then echo "python version ok" fi 但是grep命令总是返回1,而不是0,即使我得到了一个很好的匹配,即使使用一个简单的grep'Python'。要检查它,echo“${PIPESTATUS[1]}”返回1 如果我将

我想检查一下python的当前版本是否是我在bash脚本中期望的版本

python --version | grep --quiet 'Python 2.7.12 :: Continuum Analytics'
if [ $? == 0 ]; then
    echo "python version ok"
fi
但是grep命令总是返回1,而不是0,即使我得到了一个很好的匹配,即使使用一个简单的
grep'Python'
。要检查它,
echo“${PIPESTATUS[1]}”
返回
1

如果我将一些其他输出传输到grep,它将按预期工作,例如:

echo 'Python 2.7.12 :: Continuum Analytics' | grep --quiet 'Python 2.7.12 :: Continuum Analytics'
这工作正常,
echo“${PIPESTATUS[1]}”
返回
0


输送到grep的
python--version
命令出了什么问题?我们如何修复它?

尝试使用grep的
-c,--count
选项

count=$(python --version 2>&1 | grep -c 'Python 2.7.12 :: Continuum Analytics')
if [ $count == 1 ]; then
    echo "python version ok"
fi

|
替换为
2>&1
@Cyrus,这样做的原因是什么?另外,是什么引导您从我的问题,管道输出到grep,开始考虑重定向stderr/stdout?有关更多信息,我建议查看: