0

我正在尝试使用 if 语句grep来检查某些文件中是否存在字符串。现在,该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 

如果尝试使用较短的路径,但它没有帮助。

任何建议都会有所帮助。

谢谢,

4

1 回答 1

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
...
于 2013-04-24T16:38:43.893 回答