如何查找从命令行输入的数字的平均值

时间:2018-02-17 23:48:02

标签: linux bash shell

我需要编写一个bash shell脚本来获取通过命令行给出的整数参数的平均值(四舍五入到2点)。其中一个要求是我必须使用循环和至少一个变量。例如,-50,0,50和100应输出25.00。

这就是我所拥有的(获得错误):

#!/bin/bash

sum = 0

if [ $* -ls 1 ]; then
 echo "no numbers inputted"
 exit 1

for number in $*; do
 sum += number

avg = $(echo "$sum / $* | bc -l")

printf "Average input = %.2f\n" $avg

我做错了什么?

2 个答案:

答案 0 :(得分:0)

简易脚本:

#!/bin/bash

sum=0
for number in $*  
do 
    sum=$(expr $sum + $number)
done 

av=$(echo $sum / $# | bc -l)

echo "sum = $sum"  
echo "av = $av"

答案 1 :(得分:-1)

如果您不介意依赖Python,可以尝试: http://stromberg.dnsalias.org/~strombrg/stddev.html你只需要算算算术:

$ seq 10000 | ./stddev
below cmd output started 2018 Sun Jan 21 11:57:25 AM PST
minimum 1
maximum 10000
range 9999
count 10000
sum 50005000
arithmetic_mean 5000.5
geometric_mean 3680.8271822200186
median 5000.5
mode none
standard_deviation 2,886.751332
median_absolute_deviation 2,500.000000
mean_absolute_deviation 2,500.000000