我在阅读grep手册页时遇到了-q选项,它告诉grep"不向标准输出写入任何内容。如果找到任何匹配项,则立即以零状态退出,即使检测到错误也是如此。"
我不明白为什么这会是可取的或有用的行为。在一个程序中,谁的理由似乎是从标准输入、进程、写入标准输出中读取的,我为什么要完全将其静音?
在什么情况下,使以输出为目标的程序静默是有用的?为什么有人要完全忽略错误并强制执行成功的返回代码?谢谢!
grep
的退出状态不一定表示错误;它表示成功或失败。grep
将成功定义为匹配1行或多行。失败包括匹配零行、或某些其他错误,这些错误从一开始就阻止了匹配。
-q
在您不关心哪些行匹配时使用,只关心某些行匹配。
if grep -q foo file.txt; then
echo "file.txt contains foo"
else
echo "file.txt does not contain foo"
fi