-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
.当我运行grep
on-q
和file
不存在的wrongfile
,因为file
包含匹配项,尽管出现“没有这样的文件”错误,但仍以状态 grep
退出。0