我正在编写一个小脚本,它将获取我的一个工具的输出,并将读取文件中的值。
我使用数组作为存储,因此一旦数组具有文件中的值,我就会处理它们,计算各种指标。
现在我意识到不可能做这样的事情:
thearray=(1.1 2.2 3.3 4.4 5.5)
tempval=${thearray[0]} + ${thearray[1]}
我想获取数组的第一个元素(位置 0)和第二个元素(位置 1)并对它们求和,并将结果保存在 tempval 中。整个数组包含浮点数,所以我假设 shell 知道数组中数据的类型,并且应该允许我求和。
相反,输出是字段 0 的值、“+”和字段 1 的值
echo $tempval
1.1+2.2
我假设这个问题对于包含数字的变量是通用的,并且 shell 将它们视为字符串,进行连接而不是求和。
如果我将 ${the array[0]} amd ${the array[1]} 的输出放在变量中,然后我可以使用 $(( )) 语法对它们求和
var1=${the array[0]}
var2=${the array[1]}
tempvar=$((var1+var2))
尽管如此,这似乎适用于整数,而不是浮点数。
有没有办法避免这种情况,直接得到算术和,而不必在求和之前创建变量来存储数组值?我需要计算超过 14 个元素的总和,例如,当我计算平均值时,必须创建 14 个不同的变量来保存这些值似乎是一种很大的浪费。
我试过这样做
tempval=$((${thearray[0]} + ${thearray[1]}))
但它返回给我一个语法错误:无效的算术运算符。在其他语言中,我会转换为浮点数,但在这里我很迷茫。
任何建议都非常受欢迎。谢谢