Linux课程设计shell编程教学提纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<<<<<<精品资料》》》》》
课程设计报告
课程名称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设计原理
图1 Shell工作流程
2.实验步骤
2.1操作
2.1.1编辑备忘录(vi编辑)
在exp3目录下,编辑一个备忘录文件memo,其中的每行为一项日程安排,格式是:mm/dd/yy 日程提示
以下是一个memo文件的例子:
06/03/14 mother's birthday
06/08/14 lunch with joe
06/12/14 call zhang
06/14/14 meeting 4pm
06/15/14 shopping with mary
2.1.2编写日程提醒脚本(此部分操作截图见图2)
在exp3目录下编写一个Shell脚本routine,完成以下功能:
1.显示初启信息
♦脚本启动时首先输出一些初始信息,包括程序名称与编者、当前的日期与时间、适当的问候语等,格式自定。例如:
***** routine v1.0 by 2012010948 *****
Good Evening!用户名
Today is Tue Mar 12 19:25:30 CST 2014
♦提醒用户当日的日程安排
查询备忘录文件memo,显示今日的日程安排。
图2 日程提醒
2.1.3运行脚本(此部分操作截图见图3、4)
1.执行脚本。
♦为routine脚本设置执行权(chmod 755 routine),运行routine脚本(./routine),调试并检查运行结果。提示:变换memo文件内容,检查日程提示是否正确。
图3 执行脚本
2.自动执行脚本。
♦编辑主目录下的.bashrc文件,将~/2012010948/exp3/routine命令行加到文件末尾(注意将your-sid替换为你的学号)。重新启动“终端”,检查脚本是否能成功地自动执行。
图4 自动执行脚本
2.1.4编写备忘录管理脚本
1.在exp3目录下编写一个Shell脚本makememo,完成以下功能:
♦显示初启信息及菜单
显示程序初启信息(程序名、编者学号等信息),显示程序的菜单,例如:
makememo v1.0 by 2012010948
********* MENU *********
1. xxxxx
2. xxxx
3. xxxxxx
4. …
♦接收并处理用户的输入
根据用户的输入的菜单编号,执行相应的功能。
2.1.5运行脚本(此部分操作截图见图5)
2.1.6(选做)修改脚本(此部分操作截图见图5)
1.添加查找功能(按日期)
2.添加查找功能(按序号)
图5 备忘录管理
3.实验结论与评价
3.1日程提醒
此部分操作较为简单,大部分代码老师都已经给出来了,遇到困难的地方是没有办法准确地显示出当日的日程,在老师的帮助下发现原因是系统的显示时间格式必须和编辑的备忘录时间格式相同。在这个操作中主要掌握了两个技巧,一是如何根据时间显示不同的问候语,主要是会用case语句,二是如何匹配日期,用下面的语句。主要是grep的用法。
echo $day
grep $day $HOME/2012010948/exp3/memo || echo Nothing.
3.2备忘录管理(含选作)
脚本的初始代码老师已经给出,难度不大,主要是需要看懂,学会灵活运用sed命令处理文本文件。选作部分根据日期查找很容易做,但是根据序号查找遇到了困难,用grep操作的话,会显示所有含有查找序号的日程,但是用sed -n "${num}p" file就可以轻松实现。
4.程序清单
4.1Routine
echo '***** routine v1.0 by 2012010948 *****'
hour='date+%H'
case $hour in
08|09|10|11|12) echo "Good Morning!Vanilla";;
13|14|15|16|17) echo "Good Afternoon!Vanilla";;
18|19|20|21|22) echo "Good Evening!Vanilla";;
*) echo "Hello!Vanilla";;
esac
echo Today is `date`
echo -n "memo: "
day=`date +%D`
echo $day
grep $day $HOME/2012010948/exp3/memo || echo Nothing.
4.2Makememo(含选作)
#!/bin/bash
echo "makememo v1.0 by 2012010948" #显示版本和作者信息,须替换your-sid MEMOFILE=$HOME/2012010948/exp3/memo #定义备忘录文件名
add_memo() #向备忘录中添加一条记录
{
echo -n "输入要添加的日程项:"
read item
echo $item >> $MEMOFILE
sort -o $MEMOFILE $MEMOFILE
echo "日程添加已完成"