“)语法错误:无效的算术运算符(错误标记是”与数组循环时“

时间:2017-02-24 19:26:31

标签: arrays linux bash awk carriage-return

我有一个这样的文件:

<Overall>3
<Overall>1
<Overall>4
<Overall>5
...

我试图读取整个标记后的数字,将它们放在一个数组中,然后用它们进行操作,将结果添加到总数中。

    array=($(grep '<Overall>' "$file" | cut -d'>' -f 2))

    total=0
    for each in "${array[@]}"
    do
        total+=$(awk -v awkEach="${array[$each]}" 'BEGIN{print (awkEach-4.78)^2}')
    done

但我得到:“)语法错误:算术运算符无效(错误标记为”

我读了所有类似的问题并尝试了不同的东西,但似乎没有任何效果。

1 个答案:

答案 0 :(得分:4)

你可以用这个替换所有,

$ awk -F'>' '{sum+=($2-4.78)^2} END{print sum}' file

18.1136