第20讲控制脚本流程教学.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第20讲 控制脚本流程 引 言 如何测试表达式的逻辑值? 如何设计分支结构? 如何设计循环结构? 【问题的提出】 Geecy软件开发公司的开发人员Tom所开发的通讯录管理脚本phone.sh的改进版本如下: 【问题的提出】(续) 该版本比旧版本已经有了很大的改进,能够满足一般的使用。但是根据Tom的开发经验,该版本至少存在四大缺陷: (1)脚本运行的稳定性不高,因为该脚本严重依赖于辅助文件count_file.txt,一旦该文件被以外破坏,该脚本将不能正常工作; (2)运行性能不高,因为该脚本在运行过程中需要频繁读写三个文件,而从该脚本的功能来看,运行过程中需要频繁读写的文件应该只有数据文件“file.txt”; (3)功能单一,因为目前只有增加功能,还缺乏基本的搜索功能; (4)用户界面不够友好,应该使用菜单式的用户界面。 因此Tom需要继续改进该脚本。 【问题分析】 如果要提高稳定性,就要想办法避免使用辅助文件count_file.txt。 最大值就在数据文件file.txt的最后一行的第一个数据域。只需要想办法在增加一行新数据之前把该值读出来,然后增加一,就可以构造出下一个编号。 命令tail,能够从一个文本文件的最后一行起,连续抽取若干行数据显示到屏幕。 【问题分析】(续) 如果上述的稳定性问题解决了,那么只需要避免使用脚本的递归调用就可以实现整个运行过程只需要频繁读写一个文件,即数据文件file.txt。 只要找到能够重复运行某一部分脚本的替代方法,那么脚本的递归调用这种方法就可以“退役”了。 【问题分析】(续) 对于搜索功能的实现,可以使用grep命令来完成。 【问题分析】(续) 菜单式的用户界面的实现原理,就是首先打印若干个菜单项的内容到屏幕上,等待用户选择其中一个功能,脚本程序根据用户的键盘输入来判断用户的选择,从而进行相应功能的操作。然后重复。 测试表达式 test命令能够对表达式进行测试并求出True或False的逻辑值。例如: test $Name = Linus test命令的语法要求被测试的表达式中的比较运算符(例如这里的“=”)的左右两边必须有空格。 测试表达式(续) test命令可以一次测试多个表达式。这些表达式之间需要使用选项“-a”或“-o”连接。例如: test $Name = Linus -a $Country = China 为了有更好的可读性,用户可以使用方括号“[ ]”来代替test命令。例如: [ $Name = Linus ] 设计分支结构 分支结构提供给用户一种流程控制的能力,能够让用户根据某些条件作出判断,然后有所选择地执行某些语句。 使用if语句和case语句都可以实现分支结构。 设计分支结构(续) if语句的基本格式为: if Condition then Commands1 else Commands2 fi 设计分支结构(续) 设计分支结构(续) case语句的基本格式为: case Variable in Pattern1) Commands1 ;; Pattern2) Commands2 ;; ... ... *) Commands ;; esac 设计分支结构(续) 测试字符串 对字符串的测试,除了测试是否相等,还有其他的一些常用的测试。 测试算术式 Shell的变量是字符串类型,如果要把变量的内容作为数值进行比较,则需要使用算术测试选项。 测试文件 测试文件(续) 设计循环结构 循环结构提供了重复执行一段脚本的能力。 脚本程序可以使用两种风格的循环语句来实现循环结构:while循环和for循环。 设计循环结构(续) 使用while语句的格式是: while Condition do Commands done 设计循环结构(续) 设计循环结构(续) for语句实现循环结构的一种格式是: for(( Expression1; Expression2; Expression3 )) do Commands done 设计循环结构(续) 设计循环结构(续) for语句实现循环结构的另一种格式是: for Variable in List do Commands done 设计循环结构(续) 【解决方案】 【解决方案】 (续) 【解决方案】 (续) 【解决方案】 (续) 练 习 1、编写一个Shell脚本,从键盘读入5个整数。然后显示最大数、最小数以及平均值。 2、编写一个Shell脚本,显示Fibonacci数列的前20项。例如:

您可能关注的文档

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档