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

Linux 如何找到从命令行输入的数字的平均值,linux,bash,shell,Linux,Bash,Shell,我需要编写一个bashshell脚本,将通过命令行给出的整数参数的平均值四舍五入到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

我需要编写一个bashshell脚本,将通过命令行给出的整数参数的平均值四舍五入到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

我做错了什么?

如果您不介意依赖Python,您可以尝试: 你可以只计算一下算术平均值:

$ 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
简易脚本:

#!/bin/bash

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

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

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

您会遇到什么错误?您是否阅读了有关处理数字的bash文档?我在if语句中输入了介于$*和-eq 0之间的值。我得到的结果是:sum:=:没有这样的文件或目录sum:0:没有这样的文件或目录。/avg.sh:第15行:语法错误:文件的意外结尾考虑首先运行此操作,它将指出缺少的fi/done、赋值运算符周围的空格和其他常见问题。然后,您可以在此处询问剩余问题。请显示您的代码和确切错误。因为堆栈溢出对您隐藏了关闭的原因:寻求调试帮助的问题为什么这段代码不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。