第08章-编写Shell管理脚本(二)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第08章-编写Shell管理脚本(二)课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 08 编写 Shell 管理 脚本 课件
- 资源描述:
-
1、1第八章 编写Shell管理脚本(二)2课程回顾课程回顾l如何为变量赋值?如何查看变量的值?l在变量应用中,反撇号的用途是什么?l变量$0、$1、$?、$分别是什么含义?l有哪些方式可以执行Shell脚本中的语句?3技能展示技能展示l熟悉条件测试的应用l会使用if条件语句l会使用for、while循环语句l会使用case分支语句l了解其他控制语句及函数的使用4编写编写Shell管理管理脚本(二)脚本(二)本章结构本章结构使用使用if条件语条件语句句条件测试操作条件测试操作 case语句语句 if语句的结构语句的结构 until循环循环 if语句应用示例语句应用示例 使用使用for循环循环语句语
2、句 其他控制语句其他控制语句 for语句的结构语句的结构 for语句应用示例语句应用示例 while语句的结构语句的结构 while语句应用示例语句应用示例 使用使用while循循环语句环语句 循环控制语句循环控制语句 shift 语句语句函数的定义和调用函数的定义和调用 Shell函数应函数应用用 函数的参数传递函数的参数传递 5条件测试操作条件测试操作ltest命令用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值格式:test 条件表达式 条件表达式 l常见的测试类型测试文件状态字符串比较整数值比较逻辑测试6条件测试操作条件测试操作l测试文件状态格式:
3、操作符 文件或目录 l常用的测试操作符-d:测试是否为目录(Directory)-e:测试目录或文件是否存在(Exist)-f:测试是否为文件(File)-r:测试当前用户是否有权限读取(Read)-w:测试当前用户是否有权限写入(Write)-x:测试当前用户是否可执行(Excute)该文件-L:测试是否为符号连接(Link)文件rootlocalhost # -d /etc/vsftpd rootlocalhost # echo $?0rootlocalhost # -d /etc/hosts rootlocalhost # echo $?1返回值为返回值为0,表示上一,表示上一步测试的条
4、件成立步测试的条件成立rootlocalhost # -e /media/cdrom & echo YESYES rootlocalhost # -e /media/cdrom/Server & echo YES“rootlocalhost #如果测试的条件成立如果测试的条件成立则输出则输出“YES”7条件测试操作条件测试操作l整数值比较格式: 整数1 操作符 整数2 l常用的测试操作符-eq:等于(Equal)-ne:不等于(Not Equal)-gt:大于(Greater Than)-lt:小于(Lesser Than)-le:小于或等于(Lesser or Equal)-ge:大于或等于
5、(Greater or Equal)rootlocalhost # who | wc -l5rootlocalhost # who | wc -l -le 10 & echo YESYES rootlocalhost # df -hT | grep /boot | awk print $612% rootlocalhost # BootUsage=df -hT | grep /boot | awk print $6 | cut -d % -f 1rootlocalhost # echo $BootUsage12rootlocalhost # $BootUsage -gt 95 & echo Y
6、ES 如果登录用户数小于或如果登录用户数小于或等于等于10则输出则输出 YES如果如果/boot分区的磁盘使用率分区的磁盘使用率超过超过95%则输出则输出 YES8条件测试操作条件测试操作l字符串比较格式: 字符串1 = 字符串2 字符串1 != 字符串2 -z 字符串 l常用的测试操作符=:字符串内容相同!=:字符串内容不同,! 号表示相反的意思-z:字符串内容为空rootlocalhost # read -p Location: FilePathLocation:/etc/inittabrootlocalhost # $FilePath = /etc/inittab & echo YESY
7、ES rootlocalhost # $LANG != en.US & echo $LANGzh_CN.UTF-8 如果键入路径与指定的如果键入路径与指定的目录一致则输出目录一致则输出 YES如果当前的语言环境不是如果当前的语言环境不是 en_US,则输出则输出LANG变量的值变量的值9条件测试操作条件测试操作l逻辑测试格式: 表达式1 操作符 表达式2 . l常用的测试操作符-a或&:逻辑与,“而且”的意思l 前后两个表达式都成立时整个测试结果才为真,否则为假 -o或|:逻辑或,“或者”的意思l 操作符两边至少一个为真时,结果为真,否则结果为假!:逻辑否l 当指定的条件不成立时,返回结果为真
8、rootlocalhost # echo $USERrootrootlocalhost # $USER != teacher & echo Not teacherNot teacherrootlocalhost # $USER = teacher | echo Not teacherNot teacher如果发现用户不是如果发现用户不是 teacher则提示:则提示:“Not teacher”与上一命令行效果相同与上一命令行效果相同10if条件语句条件语句 单分支单分支l当“条件成立”时执行相应的操作if 条件测试命令条件测试命令 then 命令序列命令序列fiif 磁盘已用空间磁盘已用空间8
9、0% then 报警报警fiif 条件测试命令条件测试命令命令序列命令序列fi 结束判断结束判断条件为真条件为真 then条件为假条件为假11if条件语句条件语句 单分支单分支l应用示例:如果/boot分区的空间使用超过80%,输出报警信息#!/bin/bashRATE=df -hT | grep /boot | awk print $6 | cut -d % -f1 if $RATE -gt 80 then echo Warning,DISK is full!fi12if条件语句条件语句 双分支双分支l当“条件成立”、“条件不成立”时执行不同操作if 条件测试命令条件测试命令 then 命令
10、序列命令序列1 else 命令序列命令序列2fiif 3306端口是否在监听状态端口是否在监听状态 then mysqld 服务已运行服务已运行 else 启动启动 mysqld 服务服务fiif 条件测试命令条件测试命令命令序列命令序列1条件为真条件为真 then命令序列命令序列2条件为假条件为假 elsefi 结束判断结束判断13if条件语句条件语句 双分支双分支l应用示例:判断mysqld是否在运行,若已运行则输出提示信息,否则重新启动mysqld服务#!/bin/bashservice mysqld status & /dev/null if $? -eq 0 then echo my
11、sqld service is running. else /etc/init.d/mysqld restartfi14if条件语句条件语句 多分支多分支l相当于if语句嵌套,针对多个条件执行不同操作if 条件测试命令条件测试命令1 ; then 命令序列命令序列1elif 条件测试命令条件测试命令2 ; then 命令序列命令序列2elif .else 命令序列命令序列nfiif 条件测试命令条件测试命令1命令序列命令序列1条件为真条件为真 then命令序列命令序列n条件为假条件为假 elseelif 条件测试命令条件测试命令2命令序列命令序列2条件为真条件为真 thenfi 结束判断结束判
12、断15小结小结l请思考:如何判断/media/cdrom目录是否存在?提示用户输入一个整数,如何判断该值是否小于100?结合环境变量PWD,如何判断当前所在的工作目录是否为 /usr/src?逻辑测试操作符 & 与 | 的区别是什么?if语句结构有哪几种分支类型?语法格式分别是什么?16for循环语句循环语句l根据变量的不同取值,重复执行一组命令操作for 变量名变量名 in 取值列表取值列表do 命令序列命令序列done for 收件人收件人 in 邮件地址列表邮件地址列表do 发送邮件发送邮件done for 变量变量=取值取值1取值取值1取值取值ndone 结束循环结束循环do 命令序列
13、命令序列取值取值n 已使用已使用17for循环语句循环语句l应用示例1:依次输出3条文字信息,包括一天中的“Morning”、“Noon”、“Evening”字串rootlocalhost # vi showday.sh#!/bin/bashfor TM in Morning Noon Eveningdo echo The $TM of the day.done rootlocalhost # sh showday.shThe Morning of the day.The Noon of the day.The Evening of the day 验证脚本执行结果验证脚本执行结果18for循
展开阅读全文