2011-09-17 41 views
3

我想从bash中使用bc的文件中找到一堆浮点数的平均值。浮点数列表的平均数Bash

现在,当我添加使用:

let "sum=sum+${NUMBERS[$i]} | bc" 

` 我得到的语法错误,当我这样做不过。在语法上,这有什么问题?

回答

3

bc期待标准输入。由于第一个命令没有标准输出,在这种情况下,bc没有输入。试试这个:

sum=`echo $sum+${NUMBERS[$i]} | bc -l` 
+0

这有很多帮助,因为我不清楚为什么这不起作用。 bc需要标准命令的输出,比如echo,是否正确?现在我有另一个问题。为了获得平均值,我试着做average ='echo $ sum/$ NUMLEN | bc'就像你之前给我看过的那样,但是当我回显它(echo $ average | bc)时,它将小数点去掉并显示为只是一个int – gibsonfirebird12

+0

我应该早些提到它,但是在调用bc时使用-l标志启用它的数学库。所以average = $(echo $ sum/$ NUMLEN | bc -l)会做你想做的。 “|” bash中的运算符从其左侧的命令获取输出,并将其作为输入提供给其右侧的命令。所以使用echo会将表达式输出到标准输出,然后“|”将它作为输入输入到bc中。 – entitledX

+0

非常感谢! – gibsonfirebird12