如何在if语句中使用grep?

时间:2016-01-21 17:12:46

标签: bash grep find

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

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

但是,如果我把它放在if条件中,它总是返回相同的0结果,无论字符串是否存在:

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

我做错了什么?

2 个答案:

答案 0 :(得分:4)

使用grep -q选项:

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

答案 1 :(得分:1)

您可以使用-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