在运行新的Shell脚本时,我不断收到以下错误消息。我正在尝试从日志文件中提取错误,以在导致问题之前捕获它们。
:找不到[没有这样的文件或目录]
:找不到[没有这样的文件或目录]
LogErrors.sh:第5行:第14行的语法错误:if' unmatched
: not found [No such file or directory]
: not found [No such file or directory]
LogErrors.sh: line 5: syntax error at line 14:
如果不匹配
:找不到[没有这样的文件或目录]
:找不到[没有这样的文件或目录]
LogErrors.sh:第5行:第14行的语法错误:“ while”不匹配
Code:
#!/bin/ksh
TOM1=/ap/mvr/servers/tomcat1/logs/
TOM2=/ap/mvr/servers/tomcat2/logs/
find $TOM1 $TOM2 -type f -name "mvr-gateway.log" | while read file
do
LOGERRORS=$(grep -B2 -A3 'WARN|ERROR|CRIT' $file)
if[[! -z $LOGERRORS]]
then
echo "Errors in $file: $LOGERRORS" >> LogErrors.txt
fi
done
答案 0 :(得分:0)
您的语法似乎不适用于ksh,而您正在对grep使用egrep语法。
我相信这会满足您的需求:
#!/bin/ksh
TOM1=/ap/mvr/servers/tomcat1/logs/
TOM2=/ap/mvr/servers/tomcat2/logs/
find $TOM1 $TOM2 -type f -name "mvr-gateway.log" |
while read file
do
LOGERRORS=$(egrep -B2 -A3 'WARN|ERROR|CRIT' $file)
if [[ ! -z $LOGERRORS ]]
then
echo "Errors in $file: $LOGERRORS" >> LogErrors.txt
fi
done
同时,您可能希望从egrep
的输出中读取每行中的另一行while read linein
(其输出从egrep
中传递)。