Jest na to tysiąc sposobów. Oto jeden z nich dc
(odwrócony polski kalkulator biurkowy, który obsługuje arytmetykę o nieograniczonej precyzji):
dc <<<"$num1 $num2 + p"
Ale jeśli to dla ciebie zbyt błaha (lub ważne jest przenośność), możesz powiedzieć
echo $num1 $num2 + p | dc
Ale może jesteś jedną z tych osób, które uważają RPN za niegrzeczne i dziwne; nie martw się! bc
jest tu dla ciebie:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
To powiedziawszy, istnieje kilka niepowiązanych ulepszeń w skrypcie:
#!/bin/bash
num=0
metab=0
for ((i=1; i<=2; i++)); do
for j in output-$i-* ; do # 'for' can glob directly, no need to ls
echo "$j"
# 'grep' can read files, no need to use 'cat'
metab=$(grep EndBuffer "$j" | awk '{sum+=$2} END { print sum/120}')
num=$(( $num + $metab ))
done
echo "$num"
done
Jak opisano w Bash FAQ 022 , Bash natywnie nie obsługuje liczb zmiennoprzecinkowych. Jeśli chcesz zsumować liczby zmiennoprzecinkowe, wymagane jest użycie zewnętrznego narzędzia (takiego jak bc
lub dc
).
W takim przypadku rozwiązaniem byłoby
num=$(dc <<<"$num $metab + p")
Aby dodać kumulować możliwie zmiennoprzecinkowe liczby do num
.