それを行う方法は千と 1 つあります。dc
これは(無制限の精度演算をサポートする逆ポーランド式卓上計算機)を使用したものです:
dc <<<"$num1 $num2 + p"
しかし、それがあなたにとって(または移植性が問題である)あまりにも無作法である場合は、次のように言うことができます
echo $num1 $num2 + p | dc
しかし、あなたは RPN が気味悪くて奇妙だと思っている人の 1 人かもしれません。心配するな!bc
あなたのためにここにあります:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
とは言っても、スクリプトに加えることができるいくつかの無関係な改善があります。
#!/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 FAQ 022で説明されているように、Bash は浮動小数点数をネイティブにサポートしていません。浮動小数点数を合計する必要がある場合は、外部ツール (bc
または などdc
) を使用する必要があります。
この場合、解決策は
num=$(dc <<<"$num $metab + p")
浮動小数点数の累積を に追加しnum
ます。