1、3. 系统功能在主 Shell 脚本文件里(即 menu 文件)要有一个多操作选项的菜单以便用户从中选择。在不同任务的中,这些操作能自动实现以下功能:1、 在屏幕上显示当前所有用户的记录2、 在屏幕上显示当前所有用户(经过格式化和排序的)的记录3、 只在屏幕上显示用户名和用户 ID4、 只在屏幕上显示(经过格式化和排序的)用户名和用户 ID5、 查询并显示特定用户的记录6、 往 passwd 文件里增加新的用户记录7、 从 passwd 文件里删除某个用户记录其中: menu 文件中的程序完成 1,2,3,4,5 功能;另外写一个 add 脚本文件和 delete 脚本文件分别实现选项 6 和
2、 7.当用户做了选择且所选的操作完成之后,可以再次显示主菜单以供用户做下一步选择。用 while 循环和 case 条件语句配合来完成此操作。二、总体设计1.功能图显示格式化后用户名和用户 ID显示当前所有用户的记录显示当前所有用户经格式化后显示用户名和用户 ID查找指定用户信息添加用户信息删除用户信息主菜单用户信息主菜单2.流程图2.2.1 主菜单你的选择功能实现回车退出22.2.2 add 模块2.2.3 delete 模块是否继续删除Y输入 ID 是否存在是否删除N进入主菜单进入 delete 界面17三、详细设计1. MENU 主菜单在 menu 脚本文件里将创建如下菜单,菜单里包含供
3、用户选择的一些操作。无效输入当用户做了选择且所选的操作完成之后,应再次显示主菜单以供用户做下一步选择。在以上等待用户做出选择的菜单中,如果用户偶尔输入了一个代码而不是1、2、3、4、5、6、7 或 Q,就有信息提示“无效的代码,请按回车键继续”。等用户按了回车键之后,再次显示主菜单供用户做其他选择。如图:无输入在以上等待用户做出选择的菜单中,如果用户简单地按了回车键,就会出现信息“无效的代码。当用户选择了 1 时打印当前所有用户记录当用户选择 2 时打印当前经过格式化的用户记录后当用户选择 3 时,打印用户名和用户 ID当用户选择 4 时,打印(格式化的)用户名和用户 ID当用户选择 5 时,
4、查找特定的记录如果输入的关键字不在记录里如果用户简单地按回车键而不是输入关键字2. ADD 文件当用户在主菜单里选择 6 时你的 add 脚本文件就要被调用输入用户名用户输入一个无效的用户名用户只按回车没有输入输入密码输入密码时不显示要求密码长度至少达到 6 位以上确认密码如果与密码不符应该让用户重新输入用户 ID如果用户只是简单的按回车键如果用户输入的是一个无效的 ID 或者是不符合格式的 ID组 ID对组 ID 的要求类似与用户 ID,一个有效的组 ID(数字、一般非超级用户的 ID 大等于500)登录 shell一个有效的 shell 必须只能是 bash、sh、kash、csh 中的一
5、种如果用户只按回车没有输入的话则显示信息:“没有输入!”,并提示用户再次输入 shell名保存记录3. DELETE 文件当用户在主菜单中选择 7 时,你的 delete 脚本文件必须被调用用户输入一个无效的用户 ID用户简单的按回车键而没有任何输入继续删除四、附录(程序代码):1、menu 主脚本文件代码#! /bin/sh -#声明全局变量dataSource=passwd; homePath=. AddUsers=. Add.shDeleteUsers=. Delete.shCheckDataSourceFileExist()if -f $dataSource then#文件存在retu
6、rn 0; else#文件不存在clear;echo -n 警告 【$dataSource】 不存在!请确认! read ;return 1;fichoice=Fwhile $choice != Q -a $choice !q doCheckDataSourceFileExist; if $? -ne 1 thenecho 用户信息管理主菜单=1.显示当前所有记录2.格式化显示当前所有记录 echo 3.显示用户名和用户 ID4.格式化显示用户名和 ID5.查询特定用户信息6.添加新用户7.删除用户Q.退出你的选择: read choice;#作用是清除由于 read 到 string.Emp
7、ty 的时候引发的 bash 参数过多的错误。if -z $choice thenemptyif $choice = ; then选项尚未选择!else录t 登录 Shellcase $choice in1) CheckDataSourceFileExist;当前的所有的用户信息如下所示:用户名 密码 ID GID 说明 工作目录 登录 Shell cat $dataSource | tr : | more;fi;2) CheckDataSourceFileExist;echo -e 用户名t 密码tIDtGIDt 说明t 工作目sort -k 1 $dataSource | awk -F p
8、rint $1t $2 $3 $4 $5 $6 $7 3) CheckDataSourceFileExist;当前的所有的用户的用户名和用户 ID 如下所示: echo -e 用户名,IDawk -F print $1 , $3 $dataSource | more; fi;4) CheckDataSourceFileExist;more;用户名 t IDt $3 $dataSource |5) CheckDataSourceFileExist;keyWords=while -z $keyWords do输入搜索关键词:read keyWords;if -z $keyWords then搜索关
9、键词不能为空,请重新输入!fi donegrep -i $keyWords $dataSource;$keyWords 一致的信息。if $? -eq 1 thenecho很遗憾,【$dataSource】文件中,并不存在与6) $AddUsers;7) $DeleteUsers;Q) printf 程序已经退出。q) printf *) echo $choice :此选项不是默认提供的功能。请确认。 esac确认?done2、add 脚本文件代码 isContinue=y userName=while $isContinue = -o $isContinue = Y#用户名处理,输入一致到字符串长度不为 0 为止userName=while -z $userName do用户名: read userName;if -z $userName 错误!用户名是不能为空的,请重新输入! continue;if expr match $userName a-zA-Z0-9a-zA-Z* -ne expr length$userName 用户名的只能由非数字打头的字符和数字组成,请重新输入!#密码处理:1.验空,3.密码长度要 6 位,由大小写字母、数字和控制字符组成,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1