shell脚本编程
作业内容:
编写一个shell脚本,实现如下功能:
\1. 脚本运行时提供一个显示界面如下:
Menu:
1) 循环创建5个用户和密码
2) 输入成绩
3) 计算平均成绩
4) 退出
\2. 脚本运行后显示界面,循环等待用户输入选择的数字1~4,脚本接收输入数字,选择 功能。
创建用户,用户名格式:xxx+软件yyy班,密码是学号
创建完后,给出提示“用户已经创建好“,显示界面。
循环输入5个用户的成绩,以score.txt保存在用户的家目录/home/用户名下,输入完后给出提示“成绩已经输入完“,显示界面。
如果用户还没有创建,给出提示“没有学生用户”,退出。
计算5个用户的平均成绩,显示:5个学生的平均成绩:zzz,显示界面。
如果用户还没有创建,给出提示,退出。
如果成绩还没有录入,给出提速,退出。
步骤
1.编辑
vim xx.sh
2.赋予权限
chmod u+x xx.sh
3.运行
./xx.sh
#!/bin/bash
function addStudents()
{
name=''
class=''
num=''
i=0
while [ $i -le 4 ]
do
let i++
echo "请输入需要添加的第${i}位学生 班级姓名(英文 如:192lisi): "
read name
echo "请输入学生学号(密码): "
read num
useradd -d /home/${name} -m ${name}
if [ $? -eq 0 ];then
echo "学生${name} 已创建成功!"
students_array[$i-1]=${name}
fi
echo ${num} | passwd --stdin ${name} &> /dev/null
if [ $? -eq 0 ];then
echo "学生${name}用户名为:${name} (学号)密码为:${num}"
fi
done
echo "用户已经全部创建!"
Menus
}
#输入成绩,没有则返回‘没有学生用户’
function inputGrade()
{
count=0
count=${#students_array[@]}
if [ $count -eq 0 ];then
echo "没有学生用户!"
exit
fi
nums=0
while [ $nums -lt ${#students_array[@]} ]
do
echo "请输入学生${students_array[$nums]}的成绩:"
read grade
students_grade[$nums]=${grade}
cd /home/${students_array[$nums]}
touch score.txt
echo $grade >./score.txt
if [ $? -eq 0 ];then
echo "学生${students_array[$nums]}的成绩:${students_grade[$nums]}"
fi
let nums++
done
echo "全部学生的成绩已经输入完成!"
Menus
}
#计算平均成绩,没有则返回‘没有学生用户’
function avgGrade()
{
count=0
count=${#students_array[@]}
if [ $count -eq 0 ];then
echo "当前没有学生用户,用户还未创建!"
exit
fi
count2=0
count2=${#students_grade[@]}
if [ $count2 -eq 0 ];then
echo "学生成绩未录入!"
delData
exit
fi
nums=0
grageSum=0
gradeAvg=0
while [ $nums -lt ${#students_array[@]} ]
do
grageSum=`expr $grageSum + ${students_grade[$nums]}`
echo "学生${students_array[$nums]}的成绩:${students_grade[$nums]}"
let nums++
done
gradeAvg=`expr $grageSum / ${#students_array[@]} `
echo "${#students_array[@]}位学生平均成绩:$gradeAvg"
Menus
}
function delData()
{
j=0
while [ $j -lt ${#students_array[@]} ]
do
userdel -rf ${students_array[$j]}
if [ $? -eq 0 ];then
echo "学生${students_array[$j]}删除成功!"
fi
let j++
done
echo "用户数据清理完成!"
}
function Menus()
{
echo "菜单:"
echo "1——循环创建5个用户和密码"
echo "2——输入成绩"
echo "3——计算平均成绩"
echo "4——退出"
read -p "请选择操作类型:" choose
case $choose in
1)
echo "你选择的类型是1——循环创建5个用户和密码"
addStudents
;;
2)
echo "2——输入成绩"
inputGrade
;;
3)
echo "3——计算平均成绩"
avgGrade
;;
4)
echo "4——退出"
delData
exit
;;
esac
}
while true
do
Menus
done
BUG:
1.只能计算整数