【Shell案例】【小数点scale&bc】14、求平均值

描述
写一个bash脚本以实现一个需求,求输入的一个的数组的平均值

第1行为输入的数组长度N
第2~N行为数组的元素,如以下为:
数组长度为4,数组元素为1 2 9 8
示例:
4
1
2
9
8

那么平均值为:5.000(保留小数点后面3位)
你的脚本获取以上输入应当输出:
5.000

思路:记录总和和行数,求平均,并进行四舍五入

awk

循环

方法1:awk

复制代码
#!/bin/bash
awk '{
    if(NR == 1) {
        rows=$0
    } else {
        sum+=$0
    }
}END{
    printf("%.3f",sum/rows)
}' nowcoder.txt
复制代码

方法2:循环

shell脚本--let、expr、bc、scale的用法

复制代码
#!/bin/bash
num = 0
row = 0 
sum = 0
while read line
do
# $line在外面表示当前行的值
# 在[]内部,line表示值
if [[ row -eq 0 ]] then num=$line else ((sum+=line)) fi ((row++)) done < nowcoder.txt echo "scale=3;$sum/$num" | bc
复制代码

 

posted @   哥们要飞  阅读(185)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示