Bash 如何在if语句中使用grep?
我有以下命令,它给出了正确的结果:Bash 如何在if语句中使用grep?,bash,grep,find,Bash,Grep,Find,我有以下命令,它给出了正确的结果: grep--include='*.java'-Ri'System.loadLibrary'* 但是,如果我将其置于if条件中,则无论字符串是否存在,它始终返回相同的0结果: 如果[“grep--include=”*.java'-Ri“System.loadLibrary”*“=0],那么… 我做错了什么?使用grep-q选项: if grep -q --include='*.java' -Ri 'System.loadLibrary' .; then e
grep--include='*.java'-Ri'System.loadLibrary'*
但是,如果我将其置于if条件中,则无论字符串是否存在,它始终返回相同的0结果:
如果[“grep--include=”*.java'-Ri“System.loadLibrary”*“=0],那么…
我做错了什么?使用
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"
试验
为什么您希望字符串(恰好是您要运行的命令)等于字符串
0
?@EtanReisner:我想我必须将grep返回的值与0进行比较,以检查它是否找到了任何内容。返回代码和输出不是一回事。运行命令和命令的字符串值不是一回事。这就是我的观点。
$ echo "23" > a
$ grep -q 23 a && echo "yes" || echo "no"
yes
$ grep -q 45 a && echo "yes" || echo "no"
no