我是bash编程的新手。这里我试图从数组值中获得均值。
继续尝试:
${GfieldList[@]} | awk '{ sum += $1; n++ } END { if (n > 0) print "mean: " sum / n; }';
使用$ 1 Im无法获得所有值?伙计们帮我解决这个问题......
答案 0 :(得分:0)
对于每个非空的输入行,这将对行上的所有内容求和并打印均值:
$ echo 21 20 22 | awk 'NF {sum=0;for (i=1;i<=NF;i++)sum+=$i; print "mean=" sum / NF; }'
mean=21
NF
这是一个条件:只有当这一行NF
上的字段数量为真,意味着非零时,才会执行后面的语句。
sum=0
这会将sum
初始化为零。只有在有多行时才需要这样做。
for (i=1;i<=NF;i++)sum+=$i
这总结了这一行的所有字段。
print "mean=" sum / NF
这将打印字段的总和除以字段数。
答案 1 :(得分:0)
裸露
${GfieldList[@]}
不会将数组打印到屏幕上。你想要这个:
printf "%s\n" "${GfieldList[@]}"
绝对需要所有这些报价。