Es gibt tausend und eine Möglichkeit, dies zu tun. Hier ist eine Verwendung dc
(ein Reverse-Polish-Tischrechner, der Arithmetik mit unbegrenzter Genauigkeit unterstützt):
dc <<<"$num1 $num2 + p"
Aber wenn Ihnen das zu schüchtern ist (oder wenn es um Portabilität geht), können Sie sagen
echo $num1 $num2 + p | dc
Aber vielleicht gehören Sie zu den Leuten, die RPN für eklig und komisch halten. Mach dir keine Sorgen! bc
ist für dich da:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
Es gibt jedoch einige unabhängige Verbesserungen, die Sie an Ihrem Skript vornehmen könnten:
#!/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
Wie in Bash FAQ 022 beschrieben , unterstützt Bash Gleitkommazahlen nicht nativ. Wenn Sie Gleitkommazahlen summieren müssen, verwenden Sie ein externes Werkzeug (wie bc
oderdc
) erforderlich.
In diesem Fall wäre die Lösung
num=$(dc <<<"$num $metab + p")
Zum Hinzufügen von akkumulierten Gleitkommazahlen in num
.