《《控制脚本流程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《控制脚本流程》PPT课件.ppt(35页珍藏版)》请在三一办公上搜索。
1、控制脚本流程,引 言,如何测试表达式的逻辑值?如何设计分支结构?如何设计循环结构?,【问题的提出】,Geecy软件开发公司的开发人员Tom所开发的通讯录管理脚本phone.sh的改进版本如下:,【问题的提出】(续),该版本比旧版本已经有了很大的改进,能够满足一般的使用。但是根据Tom的开发经验,该版本至少存在四大缺陷:(1)脚本运行的稳定性不高,因为该脚本严重依赖于辅助文件count_file.txt,一旦该文件被以外破坏,该脚本将不能正常工作;(2)运行性能不高,因为该脚本在运行过程中需要频繁读写三个文件,而从该脚本的功能来看,运行过程中需要频繁读写的文件应该只有数据文件“file.txt”
2、;(3)功能单一,因为目前只有增加功能,还缺乏基本的搜索功能;(4)用户界面不够友好,应该使用菜单式的用户界面。因此Tom需要继续改进该脚本。,【问题分析】,如果要提高稳定性,就要想办法避免使用辅助文件count_file.txt。最大值就在数据文件file.txt的最后一行的第一个数据域。只需要想办法在增加一行新数据之前把该值读出来,然后增加一,就可以构造出下一个编号。命令tail,能够从一个文本文件的最后一行起,连续抽取若干行数据显示到屏幕。,【问题分析】(续),如果上述的稳定性问题解决了,那么只需要避免使用脚本的递归调用就可以实现整个运行过程只需要频繁读写一个文件,即数据文件file.t
3、xt。只要找到能够重复运行某一部分脚本的替代方法,那么脚本的递归调用这种方法就可以“退役”了。,【问题分析】(续),对于搜索功能的实现,可以使用grep命令来完成。,【问题分析】(续),菜单式的用户界面的实现原理,就是首先打印若干个菜单项的内容到屏幕上,等待用户选择其中一个功能,脚本程序根据用户的键盘输入来判断用户的选择,从而进行相应功能的操作。然后重复。,测试表达式,test命令能够对表达式进行测试并求出True或False的逻辑值。例如:test$Name=Linustest命令的语法要求被测试的表达式中的比较运算符(例如这里的“=”)的左右两边必须有空格。,测试表达式(续),test命令
4、可以一次测试多个表达式。这些表达式之间需要使用选项“-a”或“-o”连接。例如:test$Name=Linus-a$Country=China为了有更好的可读性,用户可以使用方括号“”来代替test命令。例如:$Name=Linus,设计分支结构,分支结构提供给用户一种流程控制的能力,能够让用户根据某些条件作出判断,然后有所选择地执行某些语句。使用if语句和case语句都可以实现分支结构。,设计分支结构(续),if语句的基本格式为:if thenelsefi,设计分支结构(续),设计分支结构(续),case语句的基本格式为:case inPattern1);Pattern2);.*);esac
5、,设计分支结构(续),测试字符串,对字符串的测试,除了测试是否相等,还有其他的一些常用的测试。,测试算术式,Shell的变量是字符串类型,如果要把变量的内容作为数值进行比较,则需要使用算术测试选项。,测试文件,测试文件(续),设计循环结构,循环结构提供了重复执行一段脚本的能力。脚本程序可以使用两种风格的循环语句来实现循环结构:while循环和for循环。,设计循环结构(续),使用while语句的格式是:while do done,设计循环结构(续),设计循环结构(续),for语句实现循环结构的一种格式是:for(Expression1;Expression2;Expression3)do do
6、ne,设计循环结构(续),设计循环结构(续),for语句实现循环结构的另一种格式是:for in do done,设计循环结构(续),【解决方案】,【解决方案】(续),【解决方案】(续),【解决方案】(续),练 习,1、编写一个Shell脚本,从键盘读入5个整数。然后显示最大数、最小数以及平均值。2、编写一个Shell脚本,显示Fibonacci数列的前20项。例如:0,1,1,2,3,5,8,13,21.,练 习(续),3、编写一个Shell脚本,从键盘上接收两个文件名,如果两个文件都存在则交换两个文件的内容,否则应给出出错信息。4、编写一个shell脚本,产生并输出如下的序列:1,2,3,
7、2,3,4,3,4,5,4,5,6 98,99,100,练 习(续),5、Cell宽带数据公司的客户服务中心对值班员工的工作质量进行跟踪评价,评价标准是客户对值班员工的“满意”投票数量与总投票数量的比值。如下表所示:Tenny需要编写一个shell脚本,读入“满意”投票数量和总投票数量,然后计算并输出相应的评定等级。,练 习(续),6、Cell宽带数据公司向客户提供一种菜单式的查询服务,如下表所示:Tenny需要编写一个shell脚本,显示服务菜单。当客户选择某一项服务后输出相应的服务内容。,练 习(续),7、Cell宽带数据公司需要录入客户的资料并保存到文件,每个客户的资料保存在单独的一行。格式如下:客户号:姓名:地址:电话:邮政编码其中要求客户号由系统自动产生,从10001起。Tenny需要编写一个Shell脚本,提示输入每项数据,并按照规定的格式保存到文件。录入完一个客户的资料后,提示是否继续。按“y”继续录入下一客户,“n”退出。,