用if语句检查文件夹中的string

我正在寻找做一个行动,当一个bahsscript在我的家里find一个string文件,但不知何故这是行不通的,我不明白为什么..我有一个印象,我的grep不返回0(而string是真的存在于一个文件中)。

#!/bin/bash find /home/ -type f | xargs grep -q 'stringtofind' if [ $? == 0 ] #if the result is not equal to zero then echo "Action" else echo "Pas d'action" exit 1 fi exit 0 

当我做下面的我的shell返回我123而不是0

 find /home/anselmewebsite/ -type f | xargs grep -q 'stringtofind' ; echo $? shell returns : 123 

预先感谢您的亮点,

您可以使用grep的-r选项使其在文件夹中递归地grep:

 grep -r yourstring /path/to/your/folder 

从手册页 :

-R,-r, – 递归

以递归方式读取每个目录下的所有文件; 这相当于-d递归选项。

这是xargs的返回代码,如果你看看你找到的手册:

123如果任何调用命令退出状态1-125

这意味着你的grep返回一个非零的退出码,当grep不匹配字符串时就是这种情况:

通常,如果找到选定的行,则退出状态为0,否则为1。

所以我强烈建议你用-R递归选项来使用grep,如果在任何文件中有一个匹配,这应该返回0。 在上面的例子中,只要一个文件不包含你的搜索模式,xargs将返回123,并且脚本的逻辑被破坏。