Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在bash中计算平均值?_Linux_Bash - Fatal编程技术网

Linux 如何在bash中计算平均值?

Linux 如何在bash中计算平均值?,linux,bash,Linux,Bash,您好,我用bash脚本制作了这个程序,我需要计算平均值,我尝试了很多次,但都不起作用 #/bin/bash 申报A级 对于((c=1;c你需要在循环时创建一个分数总数,还需要使用类似bc的方法获得小数点后的平均值。因此,利用你的原始代码: #!/bin/bash declare -A grades for (( c=1 ; c<=5 ; c++)) { read -p "enter name,course grade of 5: " course grade

您好,我用bash脚本制作了这个程序,我需要计算平均值,我尝试了很多次,但都不起作用

#/bin/bash
申报A级

对于((c=1;c你需要在循环时创建一个分数总数,还需要使用类似bc的方法获得小数点后的平均值。因此,利用你的原始代码:

#!/bin/bash

declare -A grades

for (( c=1 ; c<=5 ; c++))
{
  read -p "enter name,course grade of 5: " course grade
  grades[$course]=$grade
}

echo "your grades is"
echo ${grades[@]}
echo
echo "this is all your courses name and grades"

for  c in ${!grades[*]}
{
  echo " $c   : ${grades[$c]}"
  (( cnt++ ))                                                            # Counting elements in the array
  if [[ "$cnt" -ge "(( ${#grades}-5 ))" ]]
  then
     (( total+=${grades[$c]} ))                                          # Get a running total of the grades in index of array is one of the last 5
  fi
}
unset mygrades
av=$(echo "scale=2;$total/5" | bc)                              # Calculate the average using bc, setting the decimal places to 2 by using scale and reading the result into av
echo "Your average grade is $av"
!/bin/bash
申报A级

为了((c=1;cSo你在哪里计算平均值?我需要最后计算它。分数通常不是字母而不是数字,即A、B、c?分数是数字,我只想对它们进行平均,所以你为什么不计算它?将分数相加,然后除以5。我试过了,但有一个问题,它计算所有的数字即使我输入了50个数字,它也会出现。有没有办法让它只计算最后5个?好的,我已经修改了答案