#!/bin/bash
# 随机生成 N 个班级 M 个学生的数学成绩并保存到 score.txt 文件中
# 检查输入参数是否正确
if [ $# -ne 2 ]; then
echo "Usage: $0 N M"
exit 1
fi
N=$1
M=$2
# 创建并打开文件
touch score.txt
exec 3>score.txt
# 生成随机数并写入文件
for ((i=1; i<=N; i++))
do
for ((j=1; j<=M; j++))
do
score=$(($RANDOM % 101)) # 生成0-100的随机数
echo "student${i}:class${j}:$score" >> 3
done
done
# 关闭文件
exec 3>&-
#!/bin/bash
# 计算每个班级的学生人数和平均分并打印出来
# 检查文件是否存在并打开
if [ ! -f score.txt ]; then
echo "File 'score.txt' does not exist."
exit 1
fi
# 统计每个班级的学生人数和总分数,并计算平均分
while read line; do
class=$(echo $line | awk -F: '{print $2}')
score=$(echo $line | awk -F: '{print $3}')
((students_count[$class]++))
((total_scores[$class]+=score))
done < score.txt
# 计算每个班级的平均分并打印出来
for class in "${!students_count[@]}"; do
avg_score=$(($total_scores[$class] / ${students_count[$class]}))
echo "Class $class: ${students_count[$class]} students, average score: $avg_score"
done