LINUX.ORG.RU

Проблема с математической обработкой строк.


0

0

Добрый день, сделал следующий скрипт

#!/bin/sh
#

DIR=/var/analize

for f in $DIR/b*.log;do
if [ -f "$f" ]; then
chkpnt=`less $f | grep "|Checkpoints" | awk '{print$6}' | awk '{if ($1!=0) {a+=$1;}}; END {print a;}'`
echo $chkpnt
sum=$sum+$chkpnt
count=$count+1
fi
done
avg=$sum/$count
echo "---SUM---"
echo $sum
echo "---AVG---"
echo "$sum/$count=$avg"


Который анализирует логи в директории.
Суммируя значения |Checkpoints и потом выводя среднее значение

но почему то выдается примерно следующее
# ./analize.sh
133
134
146
21
17
187
132
---SUM---
+133+134+146+21+17+187+132
---AVG---
+133+134+146+21+17+187+132/+1+1+1+1+1+1+1=+133+134+146+21+17+187+132/+1+1+1+1+1 +1+1


подскажите как сделать математическое сложение строк?


> analize.sh

как вы яхту назовете ...

grob ★★★★★
()
Ответ на: комментарий от alphex_kaanoken

Спасибо :)

sum1=$(printf "%s\n" "$sum" | bc)
count1=$(printf "%s\n" "$count" | bc)
avg=$(printf "%s\n" "($sum1)/($count1)" | bc)


помогло )

DK
() автор топика

-avg=$sum/$count
+avg=$(($sum/$count))
 echo "---SUM---"
 echo $sum
 echo "---AVG---"
-echo "$sum/$count=$avg"
+echo "$(($sum/$count))=$avg"

Как-то так вообщем. Сам не проверял. bc тут будет излишней зависимостью.

php-coder ★★★★★
()
Ответ на: комментарий от DK

expr и $((..)) конечно нужно знать, но в приципе первый совет про bc был лучшим потому что bc поддерживает неограниченные целые

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.