“ grep -q”的意义是什么?

时间:2019-05-16 13:53:24

标签: linux bash grep gnu

我正在阅读grep手册页,并遇到了-q选项,该选项告诉grep“不在标准输出中写入任何内容。即使发现任何匹配项,即使检测到错误,也应立即以零状态退出。” < / p>

我不明白为什么这是理想的或有用的行为。在一个程序中,谁的理由似乎是从stdin,进程,向stdout中写入来读取d'etre的原因,为什么我要完全使其静音?

在什么情况下使目标为输出的程序静音会很有用?为什么有人要完全忽略错误并强制成功返回代码?

谢谢!

1 个答案:

答案 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