有一千零一种方法可以做到这一点。这是一个使用dc
(支持无限精度算术的逆波兰桌面计算器):
dc <<<"$num1 $num2 + p"
但是,如果这对您来说太 bash-y(或可移植性问题),您可以说
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
.