我正在尝试使用带有grep
的if语句来检查某些文件中是否存在字符串。现在,grep
语句本身就可以工作,但是当我将它作为if
语句的一部分运行时,输出是:
line 6: [: too many arguments
我的代码:
#!/bin/bash
if [ $(grep -c "OutOfMemory" /my/path/to/domains/*/*/subdomains/*/logs/*.*) -ne 0 ];
then
echo "String found"
else
echo "String not found"
fi
如果尝试使用较短的路径,但它没有帮助。
任何建议都会有所帮助。
谢谢,
答案 0 :(得分:3)
问题是你的grep -c
没有产生正确的输出。
例如,您可以获得多个文件:
$ grep -c "OutOfMemory" /my/path/to/domains/*/*/subdomains/*/logs/*.*
/my/path/to/domains/a/b/subdomains/c/logs/my.log:1
/my/path/to/domains/a/b/subdomains/c/logs/another.log:2
您的if
语句无法处理grep
返回的多行,因此too many arguments
失败。
如果您想查看是否有任何包含字符串“OutOfMemory”的文件,请改为:
if grep -q "OutOfMemory" /my/path/to/domains/*/*/subdomains/*/logs/*.*
then
...