Я пытаюсь написать небольшой скрипт, который будет считать записи в файле журнала, и я увеличиваю переменную (USCOUNTER
), которую я пытаюсь использовать после завершения цикла.Инкрементная переменная Bash в цикле
Но в этот момент USCOUNTER
выглядит как 0 вместо фактического значения. Любая идея, что я делаю неправильно? Благодаря!
FILE=$1
tail -n10 mylog > $FILE
USCOUNTER=0
cat $FILE | while read line; do
country=$(echo "$line" | cut -d' ' -f1)
if [ "US" = "$country" ]; then
USCOUNTER=`expr $USCOUNTER + 1`
echo "US counter $USCOUNTER"
fi
done
echo "final $USCOUNTER"
Он выводит:
US counter 1
US counter 2
US counter 3
..
final 0
Обратите внимание, что вы можете использовать $ (($ USCOUNTER + 1)) для оценки выражения – geert3
Спасибо @ geert3, хороший. Также '((USCOUNTER ++))', как использует решение anubhava. Я не добавляю его к моему ответу, если он несовместим с оболочкой OPs. – fedorqui