我需要從日誌文件中提取條目並將它們放在錯誤文件中。在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「'會忠實地代表它們。 –