当前位置:首页 > 操作系统实验课程作业shell编程 有文本文件student.txt,该文件是所有学生的信息,每个学生存储一行信息 - 图文
分支结构
If 判断 :then T块 Else F块 fi
判断 test语句 test表达式 = [表达式]
表达式进行文件判断 -f 文件名 (检测该文件是否存在且为普通文件) -d 目录名 -r 可读 -w 可写 -x 可执行
五、程序设
程序为bash程序,进行修改的txt文件为student.txt,在Shell程序运行的目录下建立一个temp目录,用来保存运行过程中的临时文件。包含有8个函数,每个函数实现相应的功能: set_menu_choice()
显示一个界面菜单,提示所能进行的操作以及选项的使用格式。同时获得输入的内容,存放在choice。
get_confirm()
判断输入是否为y|yes|Y|Yes|YES,是则返回0,表示删除;如果n|no|N|No|NO,则表
-5-
示取消删除操作。
insert_student():
将所有输入的信息通过重定向写入student.txt。
check_student():
使用awk命令以“:”为分隔符将输入的学号与txt文件的学号进行匹配; 如果该学号存在,则设存在标记student_existingFlag=y;否则 student_existingFlag=n。
stat_student()
调用check_student(),根据存在标记student_existingFlag,如果为n,则输出 学生信息不存在;如果为y,则通过awk命令输出学号所对应的列。
add_student()
调用check_student(),判断student_existingFlag是否为y,如果为y则显示 该学生信息已存在;否则调用insert_student()将学生信息插入student.txt。
delete_student()
调用check_student(),判断student_existingFlag是否为n,如果为n,则显示 该学生信息不存在;否则调用confirm_delete确定是否删除,如果确定则调用delete_student()删除学生信息。
delete_infomation()
-6-
删除操作,使用awk命令将student.txt文件中学号不等于输入的学号的所有 列重定向输出到临时文件temp_file中,再将temp_file中的内容通过cp命令复制到student.txt文件中,覆盖原来的内容,即完成删除操作。
最后主程序,首先连接student.txt文件,并清屏。设置一个while循环,当退出标记exit不为y时,进行循环获取输入的选项;调用set_menu_choice()设置界面,通过case命令判断输入choice_input,当为a时,调用add_student(),添加学生信息;当为d时,调用delete_infomation(),删除学生信息;当为s时,调用stat_student(),显示当前学号对应的学生信息;如果输入的是其他内容,则给出提示信息,重新输入。
六、shell程序调试
Shell程序的调试主要是利用bash命令解释程序的选择项。 调用bash的形式是:
bash -选择项Shell程序文件名几个常用的选择项是: -e 如果一个命令失败就立即退出。 -n 读入命令但是不执行它们。 -u 置换时把未设置的变量看做出错。 -v 当读入Shell输入行时把它们显示出来。 -x 执行命令时把命令和它们的参数显示出来。
七、程序源代码及运行结果截图 #! /bin/bash
###简单的学生信息管理程序 ###fileName:student.sh
###学生的信息存放在student.txt中
###需要在当前运行目录建立temp目录存放临时文件 ###Usage:./student.sh
-7-
###交互式执行: -a 学号:姓名:性别:专业 添加学生信息 ###交互式执行: -s 学号 显示对应学生信息 ###交互式执行: -d 学号 删除对应学生信息 ###交互式执行: -q(-Q) 退出管理程序 ###Author:Libaocan
menu_choice=\ student_infomation=\ student_existingFlag=\ current_student=\
student_file=\ temp_file=./temp/student.$$; trap 'rm -f $temp_file' EXIT;
set_menu_choice() {
clear;
echo \ echo
echo \ echo \学号:姓名:性别:专业\ echo \ echo \学号\
echo \ echo \学号\
echo \ echo eg:-l
-8-
共分享92篇相关文档