sum=$(
awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${arrValues[@]}"
)
Com zsh (caso você não tenha para usar bash
), já que ele suporta números de ponto flutuante internamente:
sum=$((${(j[+])arrValues}))
com ksh93
:
Se você precisar do tipo de precisão que o bc
fornece, você pode pré-processar os números para que 12e23
seja alterado para (12*10^23)
:
sum=$(
IFS=+
sed 's/\([0-9.]*\)[eE]\([-+]*[0-9]*\)/(*10^)/g' <<< "${arrValues[*]}" |
bc -l
)