我正在寻找做一个行动,当一个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,并且脚本的逻辑被破坏。