从文件中读取浮点数并将其添加到unix shell脚本中

从文件中读取浮点数并将其添加到unix shell脚本中,shell,unix,Shell,Unix,我有一个temp.txt文件。浮点值存在于其中 cat temp.txt 43.51 26.52 63.31 21.36 1.01 13.91 19.64 30.98 我想添加这些值 请有人帮我解决这个问题。这里有一个基于“bc”的版本: awk '{s+=$0}END{print s}' tmp.txt kent$ echo "43.51 26.52 63.31 21.36 1.01 13.91 19.64 30.98"|awk '{s+=$0}END{print s}' 220.24

我有一个temp.txt文件。浮点值存在于其中

cat temp.txt

43.51
26.52
63.31
21.36
1.01
13.91
19.64
30.98
我想添加这些值


请有人帮我解决这个问题。

这里有一个基于“bc”的版本:

awk '{s+=$0}END{print s}' tmp.txt

kent$  echo "43.51
26.52
63.31
21.36
1.01
13.91
19.64
30.98"|awk '{s+=$0}END{print s}'
220.24
#!/usr/bin/env bash
tally=0
while read value
do
    tally=`echo "scale=3;${value} + ${tally}" | bc`         
done < tmp.txt
运行输出为:

 ./script-math 
220.24
可以修改为:

#!/usr/bin/env bash
tally=0
while read value
do
    tally=`echo "scale=3;${value} + ${tally}" | bc`         
done
以便您可以:

cat tmp.txt | ./script-math 
试试这个简短的变体

paste -sd+ temp.txt|bc

以一种概括的方式找到了答案:)#/bin/bash file=“/basepath/temp.txt”sum=
awk'{for(i=1;i@sasuke您评论中的awk行不适用于您的temp.txt。每行中都有一个数字。您找到的awk行可以在一行中使用所有数字,并用空格分隔
paste -sd+ temp.txt|bc