2013-12-14 41 views
0

双号我想要做在bash的总和,但数字是用点而不是用逗号(例如:1.2333)如何总结在bash

我试图做这个脚本

#!/bin/bash 
somma=0 
n=0 
tempo=0 
val=0 
while read -r val1 val2 
do 
    somma=$((somma += val1)) 
    tempo=$(echo $tempo += $val2 | bc) 
    n=$((n +=+1)) 
done < "ret.txt" 
echo $tempo 

但我得到这个错误:

(standard_in) 1: syntax error 
+0

为什么不使用支持浮点数的工具? –

回答

1
#!/bin/bash 
somma=0 
n=0 
tempo=0 
val=0 
while read -r val1 val2; do 
    ((somma += val1)) 
    tempo=$(bc <<< "$tempo + $val2") 
    ((n++)) 
done < "ret.txt" 
echo "$tempo" 
3
awk ' 
    {sum1 += $1; sum2 += $2} 
    END {print "somma=" sum1; print "tempo=" sum2} 
' filename 

如果你需要那些价值s在你的bash脚本中,eval该awk命令的输出,或者:

read somma tempo < <(
    awk '{sum1 += $1; sum2 += $2} END {print sum1, sum2}' filename 
)