Existem mil e uma maneiras de fazer isso. Aqui está um uso dc
(uma calculadora de mesa com polimento reverso que suporta aritmética de precisão ilimitada):
dc <<<"$num1 $num2 + p"
Mas se isso é muito tímido para você (ou a portabilidade é importante), você poderia dizer
echo $num1 $num2 + p | dc
Mas talvez você seja uma daquelas pessoas que acha que a RPN é nojenta e estranha; Não se preocupe! bc
está aqui para você:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
Dito isto, existem algumas melhorias não relacionadas que você pode estar fazendo no seu script:
#!/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
Conforme descrito na Bash FAQ 022 , o Bash não suporta nativamente números de ponto flutuante. Se você precisar somar números de ponto flutuante, será necessário o uso de uma ferramenta externa (como bc
ou dc
).
Nesse caso, a solução seria
num=$(dc <<<"$num $metab + p")
Para adicionar números acumulados de ponto flutuante em num
.