Shell编程实例

上传人:re****.1 文档编号:568274862 上传时间:2024-07-23 格式:PPT 页数:27 大小:414.80KB
返回 下载 相关 举报
Shell编程实例_第1页
第1页 / 共27页
Shell编程实例_第2页
第2页 / 共27页
Shell编程实例_第3页
第3页 / 共27页
Shell编程实例_第4页
第4页 / 共27页
Shell编程实例_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Shell编程实例》由会员分享,可在线阅读,更多相关《Shell编程实例(27页珍藏版)》请在金锄头文库上搜索。

1、Shell编程技术培训中心2011-3-16课程目标通过本课程中三个实例的学习,学完后能够在Unix/Linux环境下:定制系统/应用文件的备份恢复策略定制NMS程序的启动方式NMS事件接口程序定制重点内容环境变量I/O重定向函数使用循环分支awk与cut字符串处理3 3课程目录Shell简介Shell实例1-备份恢复脚本Shell实例2-服务启动停止脚本Shell实例3-NMS事件接口脚本培训场景Redhat Advanced Server 5.4NMS 4.7.2Shell简介什么是ShellShell种类编写Shell脚本流程Shell简介什么是Shell我们知道计算机的运行离不开硬件,

2、而用户只能透过操作系统中硬件驱动来使用硬件资源。而操作系统对用户来说就是一个核心(kernel)加一个操作界面,操作界面与核心沟通的程序就是我们常用的shell,所谓的外壳程序。Shell最简单的定义是命令解释器(command interpreter):将用户的命令翻译给核心(kernel)处理,同时将核心的处理结果翻译给用户每次我们登录Unix/Linux系统时,我们就取得了一个互动模式(interactive)shell,称为login shell,若从进程(process)的角度来说,我们在shell中执行的命令,均是shell产生(fork)的子进程。如果是执行脚本(shell sc

3、ript)的话,脚本中的命令则是由另外一个非互动模式的子shell(sub shell)执行。7 7Shell简介Shell种类我们必须知道,kernel与shell是不同的两套软件,而且都可被替换:不同的操作系统使用不同的shell;同一个kernel之上可以使用不同的shell。常见的shell分为两大主流:sh:Bourne shell(sh)Bourne again shell(bash)csh:C shell(csh)tc shell(tcsh)korn shell(ksh) 8 8Shell简介编写Shell脚本流程1、定义shell解释器,如#!/bin/sh2、变量定义,如文件

4、路径、文件名等3、需要执行的命令,按执行顺序4、测试命令执行状态返回值。5、退出shell(exit )9 9环境变量定义命令序列条件测试、循环测试返回值退出shellShell解释器返回值Shell脚本实例shell脚本有三种类型用途:l批处理shelll交互式shelll字符串处理shell本文按照项目中常见的场景介绍批处理shell与字符串处理功能的脚本。批处理shell脚本常用于服务启动、程序备份;字符串处理常用于事件接口脚本的解析交互式shell常用于程序的自动化安装向导。1010实例1-备份恢复脚本脚本目的:Oracle的exp异地备份知识点1:环境变量定义知识点2:条件判断知识点

5、3:重定向实例1-备份恢复脚本知识点1:环境变量定义expnms.sh脚本中的如下内容:export ORACLE_SID=bjnmsLogFile=/tmp/oracle_back.logBackup=/oracle/oradata/bjnmsapp/ultrapowerExpFile=$(date +%Y%m%d)_nms说明:环境变量定义使用var=value的形式,可将字符串或数字赋值给一个变量名,字符串可以使用双引号引起,也可以不用双引号,也可以表示某一个目录路径,也可以是一个文件名;在变量名前加export表示将变量导出到subshell而成为一个环境变量,不加export的变量只

6、能称为本地变量(当前shell环境有效)。$()表示命令替换,将括号中的内容当做命令执行并返回执行结果。1212实例1-备份恢复脚本知识点2:条件判断expnms.sh脚本中的如下内容:if ! $USER = oracle ;then echo must be oracle run to this script exit 2fi -d $Backup & echo “directory is exists”|mkdir -p $Backup说明:以上为两种形式的条件判断:ifelse.fi与test。if判断后面方括号中的内容,判断为真返回0,为假返回1,为真时则执行then后面的语句,否则

7、执行else下的语句,执行到fi结束。test方式的条件判断可直接使用方括号 在方括号中使用条件判断,如-d测试是否为目录(directory),如果测试为真则继续执行&后面的命令,否则执行|后的命令,其中&表示关系与运算符,|表示关系或运算符1313实例1-备份恢复脚本知识点3:重定向expnms.sh脚本中的如下内容:echo “at $(date +%Y-%m-%d_%H:%M:%S)$LogFile 2&1说明:2&1 2表示标准错误STDERROR,1表示标准输出STDOUT ,2&1表示将标准错误的内容和标准输出的内容合并写入到$LogFile中1414练习1判断/tmp目录下是否

8、有test.c文件,如果没有打印filenotexists提示并在/tmp下自动创建一个test.c,如果存在则,往test.c中追加helloworld字符串。1515实例2-NMS启动停止脚本脚本目的:将NMS的三个进程的启动组合在一个脚本中,实现一条命令启动、停止NMS程序知识点1:函数使用知识点2:分支循环知识点3:传递参数实例2-NMS启动停止脚本知识点1:函数使用pid_status()Spid=$(pidof NmsServer)Mpid=$(pidof NmsMsgServer)函数表示实现某个特定的模块的功能集合,函数格式由函数名,语句块。当定义了一个函数后,只有调用了函数时

9、才会执行函数中的功能。当函数定义后,直接在shell中执行函数名则可。而函数执行是否成功则可以用return语句返回函数执行的状态。1717实例2-NMS启动停止脚本知识点2:分支循环case分支当分支中需要执行多个判断测试时,则使用case分支的效率高于普通的ifelse.fi分支,case分支对传递的参数判断后,执行判断后对应的语句。while循环当需要重复执行多个命令时,则引入while循环,同样也有for循环,在循环中使用数值计算工具控制循环次数。1818实例2-NMS启动停止脚本知识点3:传递参数在执行shell脚本,可在shell提示符后传递参数值到shell脚本中,格式如下:co

10、mmand arg1 arg2 .command表示脚本名,arg1, arg2表示传递的参数常量值,而在shell脚本中,脚本名用$0表示,紧接着后面的参数用 $1表示第一个参数常量,$2表示第二个参数常量。而当需要传递大于十个参数常量时则需用$.格式表示,如第10个参数$10.在此nms.sh脚本中引用$1来传递start或stop字符串来决定脚本的执行功能1919练习2编写一个函数,根据读入的命令参数来打印相应的输出,如读取start则打印出start字符串,读取stop则打印出stop,读取restart则先后打印stop,start2020实例3-NMS事件接口脚本脚本目的:解析处理

11、外部程序传入的参数值知识点1:awk与cut工具知识点2:if.else.fi条件判断实例3-NMS事件接口脚本知识点1:awk与cut工具awk对字符串按列处理,以列来分隔字符串,如AS_APPINSTANCE=$(echo$AS_APPINSTANCE|awk-F_print$NF)使用AWK的内置变量NF表示field个数,在awk读取的文本字符串时每一行当做一个记录,每一列按照指定的分隔符(FieldSeparator)分隔成多个域(field),默认分隔符为空格或TAB键,使用-F可以指定任意字符为分隔符。分隔后的域依次使用$0$1$2引用,分别表示每条记录中第一个、第二个、第三个域

12、(列)。lcut工具多用来截断字符串,通常使用-d指定除空格或TAB键之外的字符为分隔符,-f参数截取第几域的内容。如:AS_APPCLASS_TMP=$(echo$AS_APPCLASS|cut-d_-f1,2)2222实例3-NMS事件接口脚本知识点2:ifelse.fi条件分支同前面实例2中提到的case分支类似,使用ifelse.fi条件的扩展性较强。当有新的参数变量值需要判断时,常用此条件分支。if true ;then执行语句块1else否则执行语句块2fi结束true部分使用 条件判断,非0为true,0为false,在更新事件接口脚本时,则按实际情况优化,比如在同一个AS_CL

13、ASS下的所AS_PARAMETER都要赋同类型 的值时,则只对AS_CLASS做if判断即可。2323练习3判断AS_APPCLASS的变量值,如果以”_”作为分隔符,则判断其第一个分隔符后的字符是否为STORAGE,如果是,则截取AS_INSTANCE变量值中的最后一个字符串。AS_INSTANCE的值的格式为xx-xx-xxAS_APPCLASS的值格式为XX_XXXX_XX2424参考资料 LINUX与UNIX Shell编程指南总结通过学习本课程,我们主要学习了:shell条件分支循环的使用shell重定向功能shell函数定义、调用shell参数值传递通过学习本课程,我们掌握了:定制shell启动脚本掌握系统、数据库备份脚本定制事件接口解析脚本Question & Answer

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 文学/艺术/历史 > 人文/社科

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