Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在if语句中使用grep?_Bash_Grep_Find - Fatal编程技术网

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