Ada seribu satu cara untuk melakukannya. Inilah yang menggunakan dc
(kalkulator meja reverse-polish yang mendukung aritmatika presisi tak terbatas):
dc <<<"$num1 $num2 + p"
Tetapi jika itu terlalu bash-y untuk Anda (atau masalah portabilitas) Anda bisa mengatakannya
echo $num1 $num2 + p | dc
Tapi mungkin Anda salah satu dari orang-orang yang berpikir RPN itu menjijikkan dan aneh; jangan khawatir! bc
ada di sini untuk Anda:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
Karena itu, ada beberapa peningkatan yang tidak terkait yang bisa Anda lakukan pada skrip Anda:
#!/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
Seperti yang dijelaskan dalam Bash FAQ 022 , Bash tidak secara asli mendukung angka floating point. Jika Anda perlu menjumlahkan angka floating point diperlukan penggunaan alat eksternal (suka bc
atau dc
).
Dalam hal ini solusinya adalah
num=$(dc <<<"$num $metab + p")
Untuk menambahkan akumulasi angka-angka yang mungkin mengambang ke num
.