Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命令的grep输出有时有效。。有时不是吗? 请考虑以下事项: $ cd ~/.emacs.d/lisp/tabbar $ git pull Already up-to-date. $ git pull | grep -q "Already" ; echo $? 0_Grep_Gnu - Fatal编程技术网

命令的grep输出有时有效。。有时不是吗? 请考虑以下事项: $ cd ~/.emacs.d/lisp/tabbar $ git pull Already up-to-date. $ git pull | grep -q "Already" ; echo $? 0

命令的grep输出有时有效。。有时不是吗? 请考虑以下事项: $ cd ~/.emacs.d/lisp/tabbar $ git pull Already up-to-date. $ git pull | grep -q "Already" ; echo $? 0,grep,gnu,Grep,Gnu,还和我在一起吗?现在: $ 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

还和我在一起吗?现在:

$ 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
问题:

  • 为什么在第一种情况下会找到grep“0”(返回码)以及 “1”(未找到)在第二个
  • 为什么第一个(git pull)命令的输出是 什么时候隐藏起来
    • 我认为您的“可见”命令是输出到stderr,而不是stdout。grep只在stdout中查找,除非使用2>&1重定向

      因此,试试看

      bzr up 2>&1 | grep -q "Tree" ; echo $?
      
      我认为您的“可见”命令是输出到stderr的,而不是stdout。grep只在stdout中查找,除非使用2>&1重定向

      因此,试试看

      bzr up 2>&1 | grep -q "Tree" ; echo $?
      

      看起来bzr正在向标准错误设备输出(
      /dev/stderr
      ),而
      grep
      仅检查标准输入。您可以通过尝试将
      stderr
      重定向到
      stdin
      来确认或否认此猜测:

      bzr up 2>&1 | grep -q "Tree" ; echo $?   
      

      看起来bzr正在向标准错误设备输出(
      /dev/stderr
      ),而
      grep
      仅检查标准输入。您可以通过尝试将
      stderr
      重定向到
      stdin
      来确认或否认此猜测:

      bzr up 2>&1 | grep -q "Tree" ; echo $?   
      
      • 为什么在第一种情况下返回grep“0”(已找到),在第二种情况下返回“1”(未找到)
      可能是因为在第一种情况下,输出在stdout上,而在第二种情况下,输出在stderr上。您可以在命令中添加一个“2>&1”,将所有内容都抛出到statdout

      • 为什么第一个(git pull)命令的输出在grepping时是隐藏的
      因为你说了“-q”,这让grep闭嘴:-)

      • 为什么在第一种情况下返回grep“0”(已找到),在第二种情况下返回“1”(未找到)
      可能是因为在第一种情况下,输出在stdout上,而在第二种情况下,输出在stderr上。您可以在命令中添加一个“2>&1”,将所有内容都抛出到statdout

      • 为什么第一个(git pull)命令的输出在grepping时是隐藏的
      因为你说了“-q”,这让grep闭嘴:-)