“grep -q”有什么意义

问题描述 投票:0回答:2

我正在阅读 grep 手册页,并遇到了 -q 选项,它告诉 grep “不要向标准输出写入任何内容。如果找到任何匹配项,即使检测到错误,也立即以零状态退出。”

我不明白为什么这可能是理想或有用的行为。在一个程序中,其原因似乎是从标准输入读取、处理、写入标准输出,为什么我想完全使其安静?

在什么情况下,沉默一个以输出为目标的程序会有用?为什么有人想要完全忽略错误并强制成功返回代码?

谢谢!

linux bash grep gnu
2个回答
61
投票

grep
的退出状态并不一定表示错误 ;它表示成功失败
grep
将成功定义为匹配 1 行或多行。失败包括匹配零线,其他一些阻止匹配发生的错误。

当您不关心哪些行匹配,只关心

some

 行匹配时,使用 
-q

if grep -q foo file.txt; then
    echo "file.txt contains foo"
else
    echo "file.txt does not contain foo"
fi

2
投票

这是

grep -q
的示例:扫描命令的输出以查找特定值,然后在找到该值时执行操作:

if docker context ls | grep -q dm-manager; then
  docker context rm dm-manager
fi

如果 docker 上下文列表包含

dm-manager
,则删除名为
dm-manager
的 docker 上下文。

© www.soinside.com 2019 - 2024. All rights reserved.