您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Linux课程设计shell编程
课程设计报告课程名称Linux操作系统课程设计指导教师张玲起止日期2014-03-01至2014-06-13实验项目实验三Shell编程学院信息与通信工程学院专业电子信息工程学生姓名班级/学号成绩指导老师签字1.课程设计概述理解Shell程序的执行环境和执行过程,掌握Shell语言的一般语法规则,能用bash编写,调试简单的shell程序。1.1课程设计的目的本实验的目的是使学生理解Shell程序的执行环境和执行过程,掌握Shell语言的一般语法规则,能用bash编写简单的shell程序。1.2课程设计的内容编写一个shell脚本routine,实现日程提醒功能;编写一个shell脚本makememo,实现备忘录管理功能;(选作)修改脚本,改进或增加新的功能。1.3设计原理图1Shell工作流程2.实验步骤2.1操作2.1.1编辑备忘录(vi编辑)在exp3目录下,编辑一个备忘录文件memo,其中的每行为一项日程安排,格式是:mm/dd/yy日程提示以下是一个memo文件的例子:06/03/14mother'sbirthday06/08/14lunchwithjoe06/12/14callzhang06/14/14meeting4pm06/15/14shoppingwithmary2.1.2编写日程提醒脚本(此部分操作截图见图2)在exp3目录下编写一个Shell脚本routine,完成以下功能:1.显示初启信息脚本启动时首先输出一些初始信息,包括程序名称与编者、当前的日期与时间、适当的问候语等,格式自定。例如:*****routinev1.0by2012010948*****GoodEvening!用户名TodayisTueMar1219:25:30CST2014提醒用户当日的日程安排查询备忘录文件memo,显示今日的日程安排。图2日程提醒2.1.3运行脚本(此部分操作截图见图3、4)1.执行脚本。为routine脚本设置执行权(chmod755routine),运行routine脚本(./routine),调试并检查运行结果。提示:变换memo文件内容,检查日程提示是否正确。图3执行脚本2.自动执行脚本。编辑主目录下的.bashrc文件,将~/2012010948/exp3/routine命令行加到文件末尾(注意将your-sid替换为你的学号)。重新启动“终端”,检查脚本是否能成功地自动执行。图4自动执行脚本2.1.4编写备忘录管理脚本1.在exp3目录下编写一个Shell脚本makememo,完成以下功能:显示初启信息及菜单显示程序初启信息(程序名、编者学号等信息),显示程序的菜单,例如:makememov1.0by2012010948*********MENU*********1.xxxxx2.xxxx3.xxxxxx4.…接收并处理用户的输入根据用户的输入的菜单编号,执行相应的功能。2.1.5运行脚本(此部分操作截图见图5)2.1.6(选做)修改脚本(此部分操作截图见图5)1.添加查找功能(按日期)2.添加查找功能(按序号)图5备忘录管理3.实验结论与评价3.1日程提醒此部分操作较为简单,大部分代码老师都已经给出来了,遇到困难的地方是没有办法准确地显示出当日的日程,在老师的帮助下发现原因是系统的显示时间格式必须和编辑的备忘录时间格式相同。在这个操作中主要掌握了两个技巧,一是如何根据时间显示不同的问候语,主要是会用case语句,二是如何匹配日期,用下面的语句。主要是grep的用法。echo$daygrep$day$HOME/2012010948/exp3/memo||echoNothing.3.2备忘录管理(含选作)脚本的初始代码老师已经给出,难度不大,主要是需要看懂,学会灵活运用sed命令处理文本文件。选作部分根据日期查找很容易做,但是根据序号查找遇到了困难,用grep操作的话,会显示所有含有查找序号的日程,但是用sed-n${num}pfile就可以轻松实现。4.程序清单4.1Routineecho'*****routinev1.0by2012010948*****'hour='date+%H'case$hourin08|09|10|11|12)echoGoodMorning!Vanilla;;13|14|15|16|17)echoGoodAfternoon!Vanilla;;18|19|20|21|22)echoGoodEvening!Vanilla;;*)echoHello!Vanilla;;esacechoTodayis`date`echo-nmemo:day=`date+%D`echo$daygrep$day$HOME/2012010948/exp3/memo||echoNothing.4.2Makememo(含选作)#!/bin/bashechomakememov1.0by2012010948#显示版本和作者信息,须替换your-sidMEMOFILE=$HOME/2012010948/exp3/memo#定义备忘录文件名add_memo()#向备忘录中添加一条记录{echo-n输入要添加的日程项:readitemecho$item$MEMOFILEsort-o$MEMOFILE$MEMOFILEecho日程添加已完成}del_by_date()#按给定日期删除一条备忘录记录{echo-n输入要删除的日程项(mm/dd/yy):readitemsed-i/$item/d$MEMOFILEecho日程删除已完成}del_by_num()#按给定序号删除一条备忘录记录{set`wc-l$MEMOFILE`echo-n输入要删除的日程项编号(1-$1):readnumsed-i${num}d$MEMOFILEecho日程删除已完成}search_by_date()#按给定日期chaxun一条备忘录记录{echo-n输入要查找的日程项(mm/dd/yy):readitemgrep$item$HOME/2012010948/exp3/memo||echoNothing.}search_by_num()#按给定序号chaxun一条备忘录记录{set`wc-l$MEMOFILE`echo-n输入要查找的日程项编号(1-$1):readnumsed-n${num}p$HOME/2012010948/exp3/memo||echoNothing.}print_menu()#显示菜单{echo*****************MENU*****************echo1.显示日程2.添加日程echo3.删除日程(按日期)4.删除日程(按序号)echo5.显示菜单6.退出echo7.查找日程(按日期)8.查找日程(按序号)echo*****************************************}print_menuwhiletruedoecho-n输入操作选择(1-8):readchoicecase$choicein1)cat-n$MEMOFILE;;2)add_memo;;3)del_by_date;;4)del_by_num;;5)print_menu;;7)search_by_date;;8)search_by_num;;6)echoBye!;break;;*)echoIllegalOption;;esacdone参考文献[1]张玲.Linux操作系统基础、原理与应用,北京:清华大学出版社,2014年2月。[2]NeilMatthew,RichardStones.Linux程序设计(第3版).陈健等译.北京:人民邮电出版社,2007.[3]MarkG.Sobell.Linux命令、编辑器与Shell编程.杨明军等译.北京:清华大学出版社,2007.
本文标题:Linux课程设计shell编程
链接地址:https://www.777doc.com/doc-7234097 .html