我正在阅读 grep 手册页,并遇到了 -q 选项,它告诉 grep “不要向标准输出写入任何内容。如果找到任何匹配项,即使检测到错误,也立即以零状态退出。”
我不明白为什么这可能是理想或有用的行为。在一个程序中,其原因似乎是从标准输入读取、处理、写入标准输出,为什么我想完全使其安静?
在什么情况下,沉默一个以输出为目标的程序会有用?为什么有人想要完全忽略错误并强制成功返回代码?
谢谢!
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
这是
grep -q
的示例:扫描命令的输出以查找特定值,然后在找到该值时执行操作:
if docker context ls | grep -q dm-manager; then
docker context rm dm-manager
fi
如果 docker 上下文列表包含
dm-manager
,则删除名为 dm-manager
的 docker 上下文。