shell脚本编程

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.只能计算整数

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java-You

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值