linux - "grep -q"有什么意义

标签 linux bash grep gnu

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

我不明白为什么这可能是理想的或有用的行为。在一个似乎从 stdin 读取、处理、写入 stdout 的程序中,我为什么要完全静音它?

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

谢谢!

最佳答案

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

关于linux - "grep -q"有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170215/

相关文章:

PHP system() 调用在由 shell 调用时不起作用

linux - 从另一个脚本启动多个脚本化 screen session

linux - 保护包含空格的参数免受 eval 的影响

linux - 如何使用 GREP 命令读取文件中多于一行的内容

linux - 优先级调度 OS bash 文件

linux - 设置 Xvfb 屏幕区域以获得更大的快照

linux - 在 Linux/bash 下拆分文件及其行

json - 使 JSON 输出可 grep 吗?

grep - grep 允许搜索重复项吗?

linux - TCP 绑定(bind) Shellcode 不适用于 Shellcode 长度文件