Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章

上传人:E**** 文档编号:89155524 上传时间:2019-05-19 格式:PPT 页数:26 大小:200.01KB
返回 下载 相关 举报
Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章_第1页
第1页 / 共26页
Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章_第2页
第2页 / 共26页
Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章_第3页
第3页 / 共26页
Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章_第4页
第4页 / 共26页
Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章》由会员分享,可在线阅读,更多相关《Linux操作系统教程 教学课件 ppt 作者 汪荣斌 第5章(26页珍藏版)》请在金锄头文库上搜索。

1、第5章 编写Linux的shell脚本,本章主要内容: 变量 运算表达式 分支结构 循环结构 shell脚本里的参数处理 实现功能强大的自动化处理,变量,Linux Shell与与其他程序设计语言一样,允许定义和使用变量,Shell支持具有字符串值的变量。 变量(variables),用来存储信息的内存单元,是可存放数据的识别符。,变量,1 设置变量 Shell变量通过赋值语句完成变量定义与赋值。在Linux Shell中,变量有多种,我们可以分为以下几种: 用户变量 系统变量 特殊变量 在Linux Shell的实际使用过程中,设置变量一般有以下几种方式: 直接设置变量值 变量之间的置换 从

2、命令行参数获取 从环境变量获取 用户输入 从上面几种方式我们可以知道变量的获取是多元化的,获取变量后,我们怎样使用呢?在命令行或Shell脚本文件中使用$variables的形式引用变量variables的值。,变量,2 局部与全局变量 Linux Shell与其他程序设计语言变量一样,Shell变量也有其作用范围。Shell变量分为局部变量和全局变量。局部变量的作用范围仅仅限制在其命令行所在的Shell或Shell脚本中。全局变量的作用范围则包括本Shell进程及其所有子进程,即贯穿于整个当前用户环境。 在一个Shell里创建的变量是该Shell的局部变量,除非被用export命令将它指定为

3、全局变量。,变量,3 env命令 env命令的功能是显示当前环境或为命令的执行设置环境。语法结构如下: ( 1) 显示多个环境变量 env -i | - Name=Value . Command Argument . ( 2) 显示单个环境变量 env name env 命令允许您显示当前环境或者在一个被改变环境下运行一个指定的命令。如果没有标志或者参数被指定,env 命令会显示您的当前环境。,运算表达式,expr命令 expr命令的功能是求解表达式的值。语法结构如下: expr expression expr命令读入 expression参数,计算它的值,然后将结果写入到标准输出。 对于ex

4、pression参数,应注意以下几点: 1 用空格隔开每个项,即命令、操作数、操作符均用空格隔开。 2 用 (反斜杠) 放在 Shell 特定的字符前面。 3 对包含空格和其他特殊字符的字符串要用引号括起来。 注意:expr命令返回一个 0 来指示一个零值,而不是空字符串。,运算表达式,关系与逻辑表达式 test与 都是一种测试条件语句命令。通过这两个命令表达式,返回逻辑值,即true(0)或false(1)。test和 可以相互替换。两个命令的语法如下: test 关系表达式 关系表达式 “关系表达式”是这两个条件测试语句的命令参数。当条件表达式的值为真时,返回状态值零;当条件表达式的值为假

5、时,返回非零的状态值。,运算表达式,条件测试语句可以进行数值、字符和文件三种不同类型关系运算表达式和相应的逻辑运算表达式的测试,其主要运算符和相应的功能有以下几种。 数值测试 命令格式为: test num_1 num_2 字符串测试 字符串测试中,常用的选项有以下几个: =: 用于比较两个字串是否相同,相同则为真。 !=:用于判断两个字符串不相同,不相同则为真。 -z:用于判断一个字符串长度为0,该字符串长度为0则为真。 -n:用于判断一个字符串长度不为0,该字符串长度不为0则为真。 双目运算示例:test “$var1” = “$var1” ,结果为真。,运算表达式, 文件测试 常用的命令

6、格式为: test 文件名字符串 4逻辑运算符 前面提及的三个方面是关系运算,而有时,在测试语句中可能有两个或多个关系运算,这就需要用逻辑运算符将这些关系运算相关联起来。与其他语言的逻辑运行符一样,这里也有与、或、非逻辑运算符。 -a:表示“与”运算 o:表示“或“运算 !:表示“非”运算 其优先级为:“!”最高,“-a”次之,“-o”最低。,运算表达式,算术运算表达式 在Liux Shell脚本编写过程中,“算术表达式”可以由运算符+、-、*、/、=组成的一个表达式。这里的乘(*)、除(/)运算符前不需要添加反斜杠(/)。其语法格式如下: $(算术表达式) 由于这个算术运算表达式不是命令语句

7、,如果需要其输出结果,则还要添加一个命令。比如: echo $(123+435),分支结构,1 if结构 if结构是一种最简单、最基本的控制结构,根据对条件的判断来决定是否执行一组命令。语法格式如下: if 表达式 then 命令语句块 fi 该语句首先执行“表达式”,并检查它的终止状态。如果“表达式”返回的值为真,那么执行“命令语句块”;否则退出if语句。,分支结构,当然,如果表达式执行完毕后返回值为假,则判断条件不成立,将要退出if语句。如果用户希望转而执行其他命令表,if语句的完整结构可以帮助做到这一点。和if语句的普通结构相比,完整结构只是多了else。该语句的功能是:如果表达式返回值

8、为假,转向else后的命令表。if语句的完整结构如下: if 表达式 then 命令表1 else 命令表2 fi 该语句先执行表达式,根据表达式执行完毕的返回值做出控制判断:如果返回值为真,执行命令表1;否则执行命令表2。,分支结构,2 if语句嵌套与elif语句 当在Shell程序中出现多种情况要进行处理的时候,则一个if语句就不能满足要求了,这里提供了一个if语句中嵌入另外一个完整的if语句,来实现多种情况的分选。其语法格式如下: if then 命令语句 if then 命令语句块 else 命令语句块 fi else if then 命令语句块 else 命令语句块 fi fi,分支

9、结构,3 caseesac命令 caseesac为条件选择语句。case条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法,起格式见书。,循环结构,1 while结构 while循环结构是用命令的返回状态值来控制循环的 while循环的一般格式为: while do 命令表 done 该语句在执行前,先判断“条件表达式”。如果“条件表达式”的返回值为真,则进入循环体,执行命令表。执行完毕后,再次对“条件表达式”的返回值进行测试,如果为真就继续执行,如果为假,则跳出循环。退出循环后的返回值为最后一次命令表执行后的返回值。,循环结构,2 until结构 until命令是另一种循环结

10、构,它和while命令相似,其格式如下: until do 命令表 done until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时,继续执行循环。 在执行命令表之前,系统先执行表达式,并查看该表达式的返回值是否为真。如果为真,则结束循环语句,返回命令表中最后一条命令的返回值;如果为假,则执行循环体,直到表达式的测试值为真为止。until循环语句特别适合那些等待特殊事件发生的程序。,循环结构,3 for结构 for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以参数的形式

11、提供。For循环的一般格式为: for 变量名 in 变量表 do 命令表 done 变量名是用户所使用的循环变量的名字。变量表中存放的是变量的取值范围,同时也决定了循环执行的次数(如果执行中不退出的话)。,循环结构,4 break与continue命令 break和continue是无条件控制语句。break用于立即终止当前循环的执行,continue用于不执行循环中后面的语句而立即开始下一个循环的执行。这两个语句只有放在do和done之间才有效。 continue命令用来从while循环的开头重新开始执行循环体。如果在循环里面,某个条件符合了,用户想跳过余下的命令而从头开始执行while结

12、构,可以使用continue命令。,shell脚本里的参数处理,参数用来把值从命令传递给Shell脚本,参数(paramerter)是任何单词(通常是文件名)或字符串,它在Shell提示符后跟命令或文件名一起给出。在脚本里,参数被称为argument。 参数主要是用来创建通用的Shell脚本。,实现功能强大的自动化处理,在 Linux 中,任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。Red Hat Linux 预配置了对重要系统任务的运行,以便使系统能够时时被更新。譬如,被 locate 命令使用的 slocate 数据库每日都被更新。系统管理员可使用自动

13、化的任务来执行定期备份、监控系统、运行定制脚本等等。 Red Hat Linux 随带四个自动化任务的工具:cron、 anacron、at和 batch。,实现功能强大的自动化处理,cron cron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。 cron 假定系统持续运行,如果当某任务被调度时系统不再运行,该任务就不会被执行。要根据时间段而非确切时间来配置任务。 要使用 cron 服务,必须安装 vixie-cron RPM 软件包,而且必须正在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron 命令。要判定该服务

14、是否在运行,使用 /sbin/service crond status 命令。,实现功能强大的自动化处理,anacron anacron 是和 cron 相似的任务调度器,只不过它并不要求系统持续运行。它可以用来运行通常由 cron 运行的每日、每周和每月的作业。 要使用 anacron 服务,你必须安装了 anacron RPM 软件包,而且 anacron 服务必须正在运行。要判定该软件包是否被安装,使用 rpm -q anacron 命令。要判定该服务是否在运行,使用 /sbin/service anacron status 命令。 anacron 任务被列在配置文件 /etc/anac

15、rontab 中。文件中的每一行都代表一项任务,格式是: period delay job-identifier command,实现功能强大的自动化处理,at cron 和 anacron 被用来调度重复的任务,at 命令被用来在指定时间内调度一次性的任务。 要使用 at 或 batch 命令,你必须安装了 at RPM 软件包,并且 atd服务必须正在运行。要判定该软件包是否被安装,使用 rpm -q at 命令。要判定该服务是否正在运行,使用 /sbin/service atd status 命令。 要在某一指定时间内调度一项一次性作业,键入 at time 命令。这里的 time 是执

16、行命令的时间。,实现功能强大的自动化处理,batch batch 命令被用来在系统平均载量降到 0.8 以下时执行一次性的任务。 如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。 要查看等待运行的 at 和 batch 作业,使用 atq 命令。它显示一列等待运行的作业,每项作业只占据一行。每一行的格式都是:作业号码、 日期、小时、作业类别、以及用户名。用户只能查看他们自己的作业。如果根用户执行 atq 命令,所有用户的全部作业都会被显示。,实训,1 试编写一个脚本,显示下面的菜单: 1.Display list of all users currently logged in 2.Get help on a particular command Press to exit 如选择2,脚本要接受一个命令名作为输入数据。如果没有数据输入,脚本要显示错误并退出,否则,脚本调用手册并把命令名作为参数传递过去。,习题,1.什么是Sh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号