将bash数组值传递给bc

时间:2014-04-11 11:13:04

标签: arrays bash bc

我有一个浮点数的bash数组,比如它被称为vals并且像这样初始化 -

# load data from the datafile.txt

vals=`cat datafile.txt` 
vals=($vals)

datafile.txt看起来像这样 -

0.012256791324227446
0.012424287090558156
0.013912725724889032
0.014678182257134693

现在我需要使用bc计算vals中元素1和2的平均值,我的做法如下 -

result=$(echo "(${vals[1]} + ${vals[2]})/2.0" | bc)
echo result: $result

result始终为0,请注意元素不是0.0

任何想法?

编辑:数据已更改。

2 个答案:

答案 0 :(得分:1)

使用scale定义小数点后的位数:

$ echo "scale=5; (${vals[1]} + ${vals[2]})/2.0" | bc
.49580

$ echo "scale=3; (${vals[1]} + ${vals[2]})/2.0" | bc
.495

来自man bc

  

比例(表达式)

     

scale函数的值是之后的位数   表达式中的小数点。


另外,请注意这一点:

vals=$(cat datafile.txt)

答案 1 :(得分:1)

如果我需要浮点数,我通常会调用bc -l