Есть тысяча и один способ сделать это. Вот одно из них dc
(настольный калькулятор с обратной точностью, который поддерживает арифметику с неограниченной точностью):
dc <<<"$num1 $num2 + p"
Но если это слишком для вас (или имеет значение переносимости), вы можете сказать,
echo $num1 $num2 + p | dc
Но, возможно, вы один из тех, кто считает RPN непристойным и странным; не волнуйся! 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
.