




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BENET3.0第二学期课程,第八章 编写Shell管理脚本(二),2,课程回顾,如何为变量赋值?如何查看变量的值? 在变量应用中,反撇号的用途是什么? 变量$0、$1、$?、$分别是什么含义? 有哪些方式可以执行Shell脚本中的语句?,3,技能展示,熟悉条件测试的应用 会使用if条件语句 会使用for、while循环语句 会使用case分支语句 了解其他控制语句及函数的使用,4,编写Shell管理脚本(二),本章结构,使用if条件语句,条件测试操作,case语句,if语句的结构,until循环,if语句应用示例,使用for循环语句,其他控制语句,for语句的结构,for语句应用示例,whi
2、le语句的结构,while语句应用示例,使用while循环语句,循环控制语句,shift 语句,函数的定义和调用,Shell函数应用,函数的参数传递,5,条件测试操作,test命令 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值 格式:test 条件表达式 条件表达式 常见的测试类型 测试文件状态 字符串比较 整数值比较 逻辑测试,6,条件测试操作,测试文件状态 格式: 操作符 文件或目录 常用的测试操作符 -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -r:测试当前用户是否有权限
3、读取(Read) -w:测试当前用户是否有权限写入(Write) -x:测试当前用户是否可执行(Excute)该文件 -L:测试是否为符号连接(Link)文件,rootlocalhost # -d /etc/vsftpd rootlocalhost # echo $? 0 rootlocalhost # -d /etc/hosts rootlocalhost # echo $? 1,返回值为0,表示上一步测试的条件成立,rootlocalhost # -e /media/cdrom then 命令序列1 elif 条件测试命令2 ; then 命令序列2 elif . else 命令序列n f
4、i,15,小结,请思考: 如何判断/media/cdrom目录是否存在? 提示用户输入一个整数,如何判断该值是否小于100? 结合环境变量PWD,如何判断当前所在的工作目录是否为 /usr/src? 逻辑测试操作符 then echo $UserName have $Num files. fi done,获得使用bash作为登录Shell的用户名列表,19,while循环语句,重复测试指定的条件,只要条件成立则反复执行对应的命令操作,20,while循环语句,应用示例1: 批量添加20个系统用户帐号, 用户名依次为“stu1”、“stu2”、“stu20” 这些用户的初始密码均设置为“1234
5、56”,#!/bin/bash i=1 while $i -le 20 do useradd stu$i echo 123456 | passwd -stdin stu$i ; 模式2) 命令序列2 ; * ) 默认执行的命令序列 esac,23,case多重分支语句,应用示例1: 编写脚本文件 mydb.sh,用于控制系统服务mysqld 当执行 ./mydb.sh start 时,启动mysqld服务 当执行 ./mydb.sh stop 时,关闭mysqld服务 如果输入其他脚本参数,则显示帮助信息,#!/bin/bash case $1 in start) echo Start MyS
6、QL service. ; stop) echo Stop MySQL service. ; *) echo Usage:$0 start|stop ; esac,24,case多重分支语句,应用示例2: 提示用户从键盘输入一个字符,判断该字符是否为字母、数字或者其它字符,并输出相应的提示信息,#!/bin/bash read -p Press some key, then press Return:“ KEY case $KEY“ in a-z|A-Z) echo Its a letter. ; 0-9) echo Its a digit. ; *) echo Its function ke
7、ys、Spacebar or other keys. esac,25,until循环语句,until语句根据条件执行重复操作,until 条件测试命令 do 命令序列 done,26,shift迁移语句,用于迁移位置变量,将 $1$9 依次向左传递 例如,若当前脚本程序获得的位置变量如下: $1=file1、$2=file2、$3=file3、$4=file4 则执行一次shift命令后,各位置变量为: $1=file2、$2=file3、$3=file4 再次执行shift命令后,各位置变量为: $1=file3、$2=file4,27,shift迁移语句,应用示例: 通过命令行参数传递多个
8、整数值,并计算总和,rootlocalhost # vi showday.sh #!/bin/bash Result=0 while $# -gt 0 do Result=expr $Result + $1 shift done echo The sum is : $Result,rootlocalhost # ./sumer.sh 12 34 56 The sum is : 102,验证脚本执行结果,28,while 命令 do break done ,循环控制语句,break语句 在for、while、until等循环语句中,用于跳出当前所在的循环体,执行循环体后的语句,通常在循环体中与条
9、件语句一起使用,跳出循环,29,while do continue done ,循环控制语句,continue 在for、while、until等循环语句中,用于跳过循环体内余下的语句,重新判断条件以便执行下一次循环,通常在循环体中与条件语句一起使用,继续下次循环,30,Shell函数应用,Shell函数概述 在编写Shell脚本程序时,将一些需要重复使用的命令操作,定义为公共使用的语句块,即可称为函数 合理使用Shell函数,可以使脚本内容更加简洁,增强程序的易读性,提高执行效率,31,Shell函数应用,定义新的函数,调用已定义的函数,向函数内传递参数,函数名,函数名 参数1 参数2 .,
10、32,Shell函数应用,应用示例: 在脚本中定义一个加法函数,用于计算2个整数的和 调用该函数计算(12+34)、(56+789)的和,#!/bin/bash adder() echo expr $1 + $2 adder 12 34 adder 56 789,rootlocalhost # sh adderfun.sh 46 845,验证脚本执行结果,33,本章总结,编写Shell管理脚本(二),使用if条件语句,条件测试操作,case语句,if语句的结构,until循环,if语句应用示例,使用for循环语句,其他控制语句,for语句的结构,for语句应用示例,while语句的结构,whi
11、le语句应用示例,使用while循环语句,循环控制语句,shift 语句,函数的定义和调用,Shell函数应用,函数的参数传递,BENET3.0第二学期课程,第八章 编写Shell管理脚本(二), 上机部分,35,实验案例1:使用Shell脚本管理系统,需求描述 编写脚本程序用于监测系统服务httpd的运行状态 当服务状态失常时在“/var/log/htmon.log”文件中记入日志 自动将状态失常的httpd服务重新启动 若重启httpd服务失败,则尝试重新启动服务器主机 周一至周五期间每隔15分钟执行一次监测任务 编写脚本程序用于批量添加用户 提供交互,能根据提示指定添加用户的数量(少于1
12、00)、用户名前缀,并能设置帐号的失效时间、初始密码 用户名编号统一使用2位数,如使用“01”、“02”的形式 编写脚本批量删除用户 通过命令行参数指定要删除用户的名称前缀 删除以该前缀开头的所有用户,但要防止误删除root用户,36,实验案例1:使用Shell脚本管理系统,实现思路 编写htmon.sh脚本文件用于监测httpd服务状态 通过“service httpd status” 命令的返回值判断服务状态 使用重定向符号“”追加记录日志 结合crond计划任务定期执行 编写myuadd.sh脚本用于批量添加用户帐号 使用read命令提示用户输入变量值进行交互 使用while语句循环执行
13、添加用户的命令操作 使用if语句判断用户编号,小于10时自动在前缀后补“0” 编写myudel.sh脚本用于批量删除用户帐号 通过位置参数“$1”传递要删除用户的名称前缀 结合“grep -v root”排除掉root用户 使用for循环批量删除符合条件的用户,37,实验案例1:使用Shell脚本管理系统,学员练习,60分钟内完成,38,实验案例2:编写系统服务控制脚本,需求描述 为已安装的zebra程序编写 zebrad 服务控制脚本 启动服务:/etc/init.d/zebrad start 终止服务:/etc/init.d/zebrad start 重启服务:/etc/init.d/zebrad restart 查看服务状态:/etc/init.d/zebrad status 未正确指定“start”、“stop”、“restart”、“status”参数时,输出用法帮助信息后退出 在启动、终止服务时应显示相关提示信息 将zebrad添加为系统服务,39,实验案例2:编写系统服务控制脚本,实现思路 参考已有的系统脚本建立 zebrad 脚本文件 将启动、终止zebra程序等执行操作分别定义为函数 通过“/usr/local/sbin/zebra -d”命令启动zebra服务 结合“/var
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030免充气自行车行业市场发展分析及投资前景研究报告
- 2025-2030先进复合材料行业市场发展分析及发展前景与投资机会研究报告
- 2025-2030健身房行业市场深度分析及竞争格局与投资价值研究报告
- 2025-2030保温壶行业风险投资发展分析及投资融资策略研究报告
- 2025-2030人孔盖升降器行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030中国龙门铣床行业市场发展分析及前景趋势与投资研究报告
- 2025-2030中国黑色金属粉末行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国高速钢(HSS)行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国高粱市场销售模式及竞争前景分析研究报告
- 2025-2030中国食欲抑制剂行业市场现状供需分析及投资评估规划分析研究报告
- 班组长执行力提升培训课件
- 电影音乐欣赏智慧树知到期末考试答案章节答案2024年华南农业大学
- 《中国饮食文化》课件-中国饮食文化溯源
- 2024年贵州省中考数学真题试卷及答案解析
- 统编版语文六年级下册第四单元闯关测试卷(含答案)
- 煤炭开采单位产品能源消耗限额-编辑说明
- 书香校园-世界读书日主题教育班会
- 雪铁龙DS6说明书
- TIAC CCSA 32-2019《保险行业云计算场景和总体框架》
- 智慧农业中的农业无人机技术与应用
- 玻璃瓶丝印制度
评论
0/150
提交评论