通过管道传输到grep的python版本返回代码1
我想检查一下python的当前版本是否是我在bash脚本中期望的版本通过管道传输到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 --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?有关更多信息,我建议查看: