我需要从日志文件中提取条目并将它们放在错误文件中。在grep -q上使用变量不会生成结果
我不想要复制的误差项文件中的每个脚本运行的时间,所以我创造这样的:
grep $1 $2 | while read -r line ; do
echo "$line"
if [ ! -z "$line" ]
then
echo "Line is NOT empty"
if grep -q "$line" $3; then
echo "Line NOT added"
else
echo $line >> $3
echo "Line added"
fi
fi
done
,并使用运行:
./log_monitor.sh ERROR logfile.log errors.txt
的第一次脚本运行时会查找条目,并创建错误文件(以前没有错误文件)。
下一次,该行从来没有发现最近添加的行中的错误文件,
如果grep的-q “$行” $ 3;
因此,该脚本将相同的条目添加到错误文件中。
为什么会发生这种情况的任何想法?
顺便说一句,'set -x'是你的朋友 - 你遗漏的引号很可能是相应的。如果你的行在任何时候都有一个或两个空格,'echo $ line'会将它们改变为一个空格,而'echo'$ line“'会忠实地代表它们。 –