我正在阅读grep手册页,并遇到了-q选项,该选项告诉grep“不在标准输出中写入任何内容。即使发现任何匹配项,即使检测到错误,也应立即以零状态退出。” < / p>
我不明白为什么这是理想的或有用的行为。在一个程序中,谁的理由似乎是从stdin,进程,向stdout中写入来读取d'etre的原因,为什么我要完全使其静音?
在什么情况下使目标为输出的程序静音会很有用?为什么有人要完全忽略错误并强制成功返回代码?
谢谢!
答案 0 :(得分:6)
grep
的退出状态不一定表示错误;它表示成功或失败。 grep
将成功定义为匹配1行或更多行。失败包括匹配零行,或其他一些错误,这些错误首先导致无法进行匹配。
-q
用于当您不关心匹配的行,而只关心匹配的 some 行。
if grep -q foo file.txt; then
echo "file.txt contains foo"
else
echo "file.txt does not contain foo"
fi