Bunu yapmak için bin ve bir yol var. İşte bir dc
(sınırsız hassas aritmetiği destekleyen ters cilalı bir masa hesap makinesi):
dc <<<"$num1 $num2 + p"
Ancak bu sizin için çok bash-y ise (veya taşınabilirlik önemlidir)
echo $num1 $num2 + p | dc
Ama belki de RPN'in yapışkan ve garip olduğunu düşünen insanlardan birisiniz; endişelenme! bc
senin için burada:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
Bununla birlikte, senaryonuzda yapabileceğiniz bazı alakasız iyileştirmeler var:
#!/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
Bash SSS 022'de açıklandığı gibi , Bash kayan nokta numaralarını yerel olarak desteklemez. Kayan nokta sayılarını toplamanız gerekiyorsa harici bir aracın kullanımı ( bc
veyadc
) kullanılması gerekir.
Bu durumda çözüm
num=$(dc <<<"$num $metab + p")
Eklemek için muhtemelen kayan nokta sayıları biriktirin num
.