没有安静选项的条件 grep

没有安静选项的条件 grep

-q我一直认为有条件使用时必须使用安静( )选项grep。但重新阅读该man页面似乎没有它也应该工作。

因此,如果您想打印匹配项并在条件中使用它,您可以这样做吗

grep PATTERN FILE && do_something_else

唯一让我不确定的是退出状态似乎略有不同。

-q

  • grep 将“如果找到任何匹配项,则立即以零状态退出,即使检测到错误”。

没有-q

  • “如果找到选定的行,则退出状态为 0;如果未找到,则退出状态为 1。 如果发生错误,退出状态为 2”。

但我想不出一个例子可以让差异变得明显?

答案1

这是一个例子:

$ echo "foo" > file
$ grep foo file wrongfile; echo "Exit status: $?"
file:foo
grep: wrongfile: No such file or directory
Exit status: 2
$ grep -q foo file wrongfile;  echo "Exit status: $?"
Exit status: 0

因此,我们有一个名为 的文件file,其中包含字符串foo.当我运行grepon-qfile不存在的wrongfile,因为file包含匹配项,尽管出现“没有这样的文件”错误,但仍以状态 grep退出。0

相关内容