用ubuntu实现在score.txt文件中保存了三个班级的学生考试成绩,请编写一段shell程序计算每个班级的学生人数与平均分。
时间: 2024-10-29 09:18:41 浏览: 24
在Ubuntu中,你可以通过bash shell脚本来实现这个功能。首先,假设`score.txt`文件的结构类似这样:
```
班级A 学生1 85
班级A 学生2 90
班级B 学生3 75
班级B 学生4 80
班级C 学生5 95
...
```
你可以使用以下步骤创建一个bash脚本:
1. 创建一个名为`calculate_scores.sh`的文本文件,然后添加以下内容:
```bash
#!/bin/bash
# 初始化变量
declare -A class_info
while IFS= read -r line; do
# 使用IFS (Internal Field Separator) 分割行,获取班级、学生名和分数
fields=$(IFS=' ' read -ra field <<< "$line")
# 提取班级和分数
class="${fields[0]}"
score="${fields[2]}"
# 计算并更新班级信息
if [[ ${class_info[$class]+isset} ]]; then
let "class_info[$class][1]++" # 班级人数++
let "class_info[$class][2]+=score" # 总分累加
else
class_info[$class]=([1]=1 [2]=$score) # 新班级初始化
fi
done < score.txt
# 打印每个班级的信息
for class in "${!class_info[@]}"; do
students=${class_info[$class][1]}
average=$((class_info[$class][2] / students))
echo "班级$class: 学生数 $students,平均分 $average"
done
# 清理IFS设置
unset IFS
```
2. 给脚本添加执行权限:
```sh
chmod +x calculate_scores.sh
```
3. 运行脚本:
```sh
./calculate_scores.sh
```
这个脚本会读取`score.txt`,根据班级统计人数和总分,并计算平均分。
阅读全文