请考虑以下事项:
$ cd ~/.emacs.d/lisp/tabbar
$ git pull
Already up-to-date.
$ git pull | grep -q "Already" ; echo $?
0
还在我身边吗?现在:
$ cd ~/src/emacs-tmp/trunk
$ bzr up
Tree is up to date at revision 108837 of branch /home/px/src/emacs-tmp/trunk
$ bzr up | grep -q "Tree" ; echo $?
Tree is up to date at revision 108837 of branch /home/px/src/emacs-tmp/trunk
1
问题:
答案 0 :(得分:1)
我认为你的“可见”命令输出到stderr,而不是stdout。 grep仅在stdout中查找,除非您使用2>& 1重定向。
因此,请尝试
bzr up 2>&1 | grep -q "Tree" ; echo $?
答案 1 :(得分:1)
看起来bzr正在输出到标准错误设备(/dev/stderr
),而grep
仅检查标准输入。您可以尝试将stderr
重定向到stdin
:
bzr up 2>&1 | grep -q "Tree" ; echo $?
答案 2 :(得分:1)
可能是因为在第一种情况下输出是在stdout上,而在第二种情况下是在stderr上。您可以在命令中添加“2>& 1”以将所有内容都输出到stadout。
因为你说“-q”,它告诉grep闭嘴: - )