如何在 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
我有以下给出正确结果的命令:
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