如何在 if 语句中使用 grep?

How to use grep in an if statement?

我有以下给出正确结果的命令:

grep --include='*.java' -Ri 'System.loadLibrary' *

然而,如果我把它放在 if 条件下,它总是 returns 相同的 0 结果,无论字符串是否存在:

if [ "grep --include='*.java' -Ri 'System.loadLibrary' *" = 0 ] then ...

我做错了什么?

使用grep -q选项:

if grep -q --include='*.java' -Ri 'System.loadLibrary' .; then
   echo "found a matching file"
fi

你可以用-q作为安静输出直接说:

if grep -q ....; then
   # things

如果只执行一个操作,甚至是短路操作员:

grep -q ... && echo "yes"

测试

$ echo "23" > a
$ grep -q 23 a && echo "yes" || echo "no"
yes
$ grep -q 45 a && echo "yes" || echo "no"
no