3

是否可以知道以下命令的输出是否为空?

cat anyfile.txt | grep anymessage

没有将显示的输出放入变量中,也没有将显示的输出重定向到文件

4

5 回答 5

9

如果未找到匹配项,则 grep 命令以状态 1 退出。您可以像这样使用退出状态:

whatever | grep pattern
echo $?

在 shell 脚本中,您甚至可以编写:

if whatever | grep pattern ; then
     # match was found
else
     # not found
fi
于 2013-07-29T10:40:37.740 回答
2

你可以告诉 grep-q保持安静:

if  grep -q anymessage anyfile.txt ; then
    # found
else
    # not found
fi
于 2013-07-29T11:02:30.943 回答
2

如果您这样做,grep 'sometext' anyfile.txt >/dev/null则不会打印任何内容。

但是,如果您$?之后阅读,如果匹配行将显示 0,否则将显示 1。

于 2013-07-29T10:41:21.323 回答
1

您可以编写一个带有 if 语句的小脚本并打印出 true 或 false。

于 2013-07-29T10:45:24.853 回答
0

也可以使用“grep -c anymessage anyfile.txt”(-c 获取匹配数)

于 2013-07-29T11:49:24.120 回答