2020-06-16 Не Правильное Использование Tail И Grep

Ошибка: скрипт постоянно находит трейсбеки в логах, даже исправленные.

Как не надо делать: Был написан скрипт, который грепает трейсбеки из последних 2к строк логах:

if grep -q "Traceback" <<< "$(tail -n 2000 $LOGS_DIR/$logfile)"; then
   traceback_count="$(tail -n 1500 "$DIG_DIR/$logfile" | grep Traceback  | wc -l)"
fi

Как надо делать: скрипт должен сохранять последную проверенную строчку в файл, чтобы при повторной проверке сбрасывать счетчик трейсбеков, если дойдёт до предыдущей проверенной строки:

if [ -f "$last_job_filename" ]; then
   last_job="$(cat "$last_job_filename")"
fi
 
while read -r row; do
   if grep -q "Traceback" <<< "$row"; then
       traceback_count=$((traceback_count+1))
   fi
 
   if [ "$last_job" = "$row" ]; then
       traceback_count=0
   fi\\
done < <(tail -n 2000 "$LOGS_DIR/$logfile")
 
tail -n 1 "$LOGS_DIR/$logfile" > "$last_job_filename"

~~OWNERAPPROVE~~

Прочитал правила разработки как не надо делать 2020-06-16 не правильное использование tail и grep
Yes(3) No(1) Clear

Yes:
Александр Хромлюк, Nikolay Carbonsoft, Наумов Михаил,

No:
,

a.polukhina.polukhin, 16.07.2020 08:17

А не возникнет ситуации, когда скрипт примет две одинаковых строки за одну и ту же?

Ваш комментарий. Вики-синтаксис разрешён: