版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块3Shell基础编程Shell选择结构3.3.1Shell脚本中的逻辑判断通常,在Bash的各种条件结构和流程控制结构中,都要进行各种测试,根据测试结果执行不同的操作,有时也会与if等条件语句相结合来完成测试判断,以减少程序运行的错误。执行测试表达式后通常会返回“真”或“假”。执行命令后的返回值为0表示真,非0表示假一样。测试表达式的语法比较复杂且容易混淆,表3-2列出了测试表达式test、[]、[[]]和(())的区别及应用范围。表3-2不同符号测试表达式的区别及应用范围3.3.1Shell脚本中的逻辑判断符号测试表达式较多,容易混淆,这里建议使用[[]],对其他语法了解即可,当有需要时可以查阅相关资料。关于字符边界是否需要空格的理解应该如图所示,测试表达式也建议留有空格。3.3.1Shell脚本中的逻辑判断在Linux系统中一切皆为文件。例如,当要创建文档时,如果能判断此文档已经存在,就换一个名字,避免程序出错及无畏的资源浪费。在书写文件测试表达式时,对象可以是文件(普通文件、目录)、字符串、数字等。通常可以使用表3-3中的文件测试操作符进行判断。3.3.1Shell脚本中的逻辑判断有时也会进行两个字符串的比较,如字符串是否相同、字符串的长度是否为零、字符串是否为NULL等。通常可以使用表3-4中的字符串测试操作符进行判断。表3-4常用的字符串测试操作符及其说明3.3.1Shell脚本中的逻辑判断以上列举了比较常用的操作符,更多的操作符可通过查阅相关资料获得帮助。在Shell脚本中的逻辑判断用得比较多的是if和switch语句。if语句有三种基本的格式,在此基础上可以扩展一些其他格式。3.3.2单分支if语句单分支if语句可理解为汉语中的“如果……那么……”,它有两种语法,分别如下。第一种语法为:if条件测试表达式;then操作语句(可以多条)fi第二种语法为:if条件测试表达式then操作语句(可以多条)fi3.3.2单分支if语句条件测试表达式见表3-2,每个if条件语句都以if开头,并有then,最后以fi结尾。条件语句还可以嵌套使用,即if条件语句里还包括if条件语句。
需要注意的是:每个if语句都需要与下面最近的fi配对结尾,尽量让成对的条件语句关键字的缩进相对应,以方便阅读浏览。3.3.2单分支if语句语法结构为:if条件测试表达式;thenif条件测试表达式;then操作语句(可以多条)fifi3.3.2单分支if语句【例3-1】判断/root目录下是否存在/root/A/B/C目录,如果存在则不执行任何操作,反之输入Y或者y进行创建。3.3.2单分支if语句【例3-2】开发Shell脚本,输出系统总内存及剩余内存的大小。上面脚本中的“free--m”命令是以MB为单位获取内存情况的,后面使用了awk计算$2和$4各段的总和,里面的END表示所有的行都已经执行相加,这是awk特有的语法。同时需要注意的是反引号(``)的使用。3.3.3双分支if语句双分支if语句可理解为汉语中的“如果……那么……否则……”,它的语法结构如下。if
条件测试表达式
;then操作语句1(可以多条)else操作语句2(可以多条)fi3.3.3双分支if语句【例3-3】编写Shell脚本复制文件,并判断文件1是否比文件2新,如果新则覆盖,反之则提示。3.3.3双分支if语句【例3-4】编写Shell脚本,判断某主机是否在线(通过ping方法)。这里的脚本主要使用ping命令来测试与对方主机的网络联通性,而Linux系统中的ping命令不像Windows一样尝试4次就结束,可以通过“-c”参数来规定尝试的次数,并使用“-i”参数定义每个数据包的发送间隔(单位:秒),以及使用“-W”参数定义等待超时时间(单位:秒)。3.3.3多分支if语句多分支if语句可理解为汉语中的“如果……那么……否则如果……那么……”,它的语法结构为:if条件测试表达式;then操作语句1(可以多条)elif条件测试表达式;then操作语句2(可以多条)else操作语句3(可以多条)fi3.3.4多分支if语句【例3-5】编写Shell脚本,从键盘输入成绩进行判断,如果大于85,则输出“Perfect”;如果大于75,则输出“Good”;如果大于60,则输出“及格”;其他则输出“不及格或数据有误”。3.3.4多分支if语句【例3-6】编写Shell脚本,判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中的vendorid一行。如果其生产商为GenuineIntel,就显示其为Intel公司;如果其生产商为AuthenticAMD,就显示其为AMD公司;否则,就显示无法识别。例中的[[:space:]]用来匹配空白字符,包括空格和Tab。利用sed命令去掉字符串中的所有空白字符为空。3.3.5case语句与if语句一样,case语句同样可以用于多分支选择语句,常用来根据表达式的值选择要执行的语句,它的语法结构如下。case$变量名in值1)操作语句1(可以多条);;值2)操作语句2(可以多条);;……值N)操作语句N(可以多条);;*)操作语句N+1(可以多条)esac3.3.5case语句case语句的变量最终的值-将与值1、值2等进行逐一比较,直到找到匹配的值-如果与其匹配,执行其后的命令,遇到双分号“;;”,则跳到esac后的语句继续执行,-如果没有找到与变量最终的值相匹配的值,脚本将执行默认值“*)”后的命令,直至“;;”为止。需要注意的是,值1、值2、……、值N必须是常量或者正则表达式.因此case语句有时无法对if嵌套语句进行改写,只有当两个语句的判断条件匹配某常量或
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新型动力电池项目风险评估报告
- 石英岩开采破碎加工项目竣工验收报告
- 客户信用管理通知函3篇
- 田径训练负荷调控设计
- 数控机床项目运营管理方案
- 微生物菌剂项目绩效评价
- 水电站下闸蓄水培训
- 行车梁安装工程专项施工方案
- 废塑料和废旧纺织品资源化循环利用项目风险评估报告
- 排水沟渠改造整治工程技术方案
- 体育场馆设计阶段的重点难点及关键技术控制措施
- 2025医院卫生院安全生产大排查大整改工作方案
- 太空探索与航天科技:初中物理科普教学教案
- 乡镇周转房管理办法
- 低压故障排除培训课件
- 部队卫生员试题及答案
- 《外国美术史》课程教学大纲
- 《建筑施工技术》课件
- 安全保卫组织架构及职责描述
- 2024年学校安全事故典型案例
- PMC-紧急订单作业流程图
评论
0/150
提交评论