Linux 如何找到从命令行输入的数字的平均值
我需要编写一个bashshell脚本,将通过命令行给出的整数参数的平均值四舍五入到2点。其中一个要求是我必须使用一个循环和至少一个变量。例如,-50、0、50和100应输出25.00 以下是我遇到的错误: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
#!/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、赋值运算符周围的空格和其他常见问题。然后,您可以在此处询问剩余问题。请显示您的代码和确切错误。因为堆栈溢出对您隐藏了关闭的原因:寻求调试帮助的问题为什么这段代码不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。