shell编程培训.ppt
《shell编程培训.ppt》由会员分享,可在线阅读,更多相关《shell编程培训.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Shell编程编程TOPIC:Shell编程编程n n一、管道一、管道n n二、变量二、变量,判断和重复动作判断和重复动作n n三、三、Shell 编程编程n n四、四、awk和和sedTOPIC:Shell编程编程n n一、管道一、管道我们可以使用管道符”|”来连接进程.在Linux系统中,由管道连接起来的进程可以自动运行,就如同在他们有一个数据流一样.使用的管道数并没有一个量的限制.在这个命令中,使用了ps的输出,将这个输出以字母的顺序进行排序,使用uniq来解压进程,使用grep-vsh来移除名为sh的进程,最后在屏幕上显示结果$ps-ef|sort|uniq|grep-vsh|more
2、$ps|sort命名管道,匿名管道,FIFO管道(mkfifo)$psps.out$sortps.out$rmps.outTOPIC:Shell编程编程n n二、二、Shell 编程编程n nShell脚本的建立和执行ShellShell脚本脚本使用使用vi vi编辑编辑shellshell脚本脚本执行执行shellshell脚本的方式脚本的方式n n输入定向到输入定向到shellshell$sh$sh”SHELLSHELL当前当前shellshell的路径的路径TERMTERM终端的类型终端的类型ansivt100ansivt100HZHZ每秒时钟的中断次数每秒时钟的中断次数TZTZ时区时区
3、LOGNAMELOGNAME用户注册名用户注册名MAILCHECKMAILCHECK多长时间检查邮件是否到达多长时间检查邮件是否到达MAILPATHMAILPATH表示各个邮箱路径表示各个邮箱路径ShellShell中的特殊字符中的特殊字符n nShell元字符?匹配单个字符*匹配零个或多个字符abc匹配a、b、c这组字符中的一个!abc匹配a、b、c这组字符以外的某个字符a-z匹配在a至z这个范围内的某个字符!a-z匹配不在a至z这个范围内的某个字符a,ile,ax匹配一个或一组字符$cat file$cat fileLovely catLovely catcatcatcatchcatchc
4、a1_tabbit.ca1_tabbit.cabbitcabbit$grep ca1-9*t file$grep ca1-9*t file$egrep?ca1-9*t file$egrep?ca1-9*t file n n基本正则表达式元字符元字符元字符功能功能示例示例示例的匹配示例的匹配对对象象行首定位符/love/匹配所有以love开头的行$行尾定位符/love$/匹配所有以love结尾的行.匹配除换行符外的单个字符/l.e/匹配包含字母l、后跟两个任意字符、再跟字母e的行*匹配零个或多个前导字符/*love/匹配在零个或多个空格紧跟着模式love的行匹配指定字符组内的任一字符xyz将会匹
5、配字符x,y,或z.c-n匹配字符c到字符n之间的任意一个字符.B-Pk-y匹配从B到P,或者从k到y之间的任意一个字符.a-z0-9匹配任意小写字母或数字.b-d将会匹配范围在b到d之外的任意一个字符.这就是使用对字符集取反的一个实例.YyEeSs能够匹配yes,Yes,YES,yEs/Llove/匹配包含love和Love的行Awksedgrepegrep支持n n基本正则表达式元字符Sedgrepegrep支持元字符 功能示例示例的匹配对象词首定位符/词尾定位符/love/匹配包含以love结尾的单词的行Sedgrepegrep支持元字符元字符功能功能示例示例示例的匹配示例的匹配对对象象
6、&保存查找串以便在替换串中引用s/love/*&*/符号&代表查找串。字符串love将替换前后各加了两个星号的引用,即love变成*love*n n引号双引号双引号n n由双引号括起来的字符,除由双引号括起来的字符,除$、倒引号和反斜线、倒引号和反斜线()()仍保留其特殊仍保留其特殊功能外,其余字符通常作为普通字符对待功能外,其余字符通常作为普通字符对待单引号单引号n n单引号括起来的字符都作为普通字符出现单引号括起来的字符都作为普通字符出现倒引号倒引号n n倒引号括起来的字符串被倒引号括起来的字符串被shellshell解释为命令行,命令行的输出解释为命令行,命令行的输出结果取代被倒引号引用
7、的字符串。结果取代被倒引号引用的字符串。$echo The time is date,the file is$HOME/abc$echo The time is date,the file is$HOME/abcThe time is date,the file is$HOME/abcThe time is date,the file is$HOME/abc$Nuser=echo The number of users iswho|wc-l$Nuser=echo The number of users iswho|wc-l$echo$Nuser$echo$NuserThe number of
8、users is 5The number of users is 5n ntesttest或或n ntestf“$1”testf“$1”或或-f$1-f$1有关文件方面的测试有关文件方面的测试n n-r,-w,-x,-f,-d,-p,-s,-t-r,-w,-x,-f,-d,-p,-s,-t(文件名)(文件名)参数参数功能功能-r-r文件名文件名若文件存在并且是用户可读,为真若文件存在并且是用户可读,为真-w-w文件名文件名若文件存在并且是用户可写,为真若文件存在并且是用户可写,为真-x-x文件名文件名若文件存在并且是用户可执行,为真若文件存在并且是用户可执行,为真-f-f文件名文件名若文件存在
9、并且是普通文件,为真若文件存在并且是普通文件,为真-d-d文件名文件名若文件存在并且是目录文件,为真若文件存在并且是目录文件,为真-p-p文件名文件名若文件存在并且是若文件存在并且是FIFOFIFO文件,为真文件,为真-s-s文件名文件名若文件存在并且不是空文件,为真若文件存在并且不是空文件,为真-t-t描述字描述字如果打开文件时其描述字是与终端设备相关的,为如果打开文件时其描述字是与终端设备相关的,为真真有关字符串方面的测试有关字符串方面的测试参数参数功能功能-zs1-zs1s1s1长度为长度为0 0,为真,为真-ns1-ns1s1s1长度不为长度不为0 0,为真,为真s1s1s1s1不是空
10、字符串,为真不是空字符串,为真s1=s2s1=s2s1s1等于等于s2s2,为真,为真s1!=s2s1!=s2s1s1不等于不等于s2s2,为真,为真有关数值方面的测试有关数值方面的测试参数参数功能功能n1eqn2n1eqn2n1n1等于等于n2,n2,为真为真n1nen2n1nen2n1n1不等于不等于n2,n2,为真为真n1ltn2n1ltn2n1n1小于小于n2,n2,为真为真n1len2n1len2n1n1小于或等于小于或等于n2,n2,为真为真n1gtn2n1gtn2n1n1大于大于n2,n2,为真为真n1gen2n1gen2n1n1大于或等于大于或等于n2,n2,为真为真n nca
11、se语句casecase字符串字符串 inin正则表达式正则表达式1)1)命令命令命令命令;正则表达式正则表达式2)2)命令命令命令命令;正则表达式正则表达式n)n)命令命令命令命令;esacesaccase$choice incase$choice in time|date)echo“The time is date”;time|date)echo“The time is date”;dir|path)echo“current directory is pwd”;dir|path)echo“current directory is pwd”;*)echo“bad argument”;*)ec
12、ho“bad argument”;esacesacn nwhile语句whilewhile测试条件或命令测试条件或命令dodo命令表命令表donedonewhile test$1while test$1do do if test-f$1 if test-f$1 then echo“display:$1”then echo“display:$1”cat$1 cat$1 else echo“$1 is not a file name“else echo“$1 is not a file name“fi fi shift shiftdonedoneecho“key in file name-c”ec
13、ho“key in file name-c”read filenameread filenameecho“key in data”echo“key in data”read x read x while test“$x”!=“exit”while test“$x”!=“exit”dodo echo$x$filename echo$x$filename read x read xdonedonecat$filenamecat$filenamen nuntil语句untiluntil测试条件或命令测试条件或命令dodo命令表命令表donedoneuntil test “$2”=“”until te
14、st “$2”=“”dodo cp$1$2 cp$1$2 shift 2 shift 2donedoneif test“$1”!=“”if test“$1”!=“”then echo“bad argument!”then echo“bad argument!”fi fin nfor语句forfor变量变量 inin值表值表dodo命令表命令表donedonefor day in Monday Wednesday Fridayfor day in Monday Wednesday Fridaydodo echo$day echo$daydonedoneforfor变量变量 inin文件正则文件正
15、则表达式表达式dodo命令表命令表donedonefor file in m*.cfor file in m*.cdo do cat$file cat$filedonedoneforin$*forin$*或者或者foriforidodododo命令表命令表命令表命令表donedonedonedone$cat ex12$cat ex12dir=$1;shiftdir=$1;shiftif test-d$dirif test-d$dirthenthen cd$dir cd$dir for name in$*for name in$*do do if test-f$name if test-f$na
16、me then cat$name then cat$name echo“End of$dir/$name”echo“End of$dir/$name”else echo“invalid file name:$dir/$name”else echo“invalid file name:$dir/$name”fi fi done doneelse echo“bad directory name:$dir”else echo“bad directory name:$dir”fi fin nexitexit命令命令exitnexitnn n算术表达式算术表达式+,-,*,/,%+,-,*,/,%exp
17、rn1exprn1运算符运算符 n2n2expr12*12expr12*12n n函数函数函数名函数名()()命令表命令表$cat ex13$cat ex13abc()abc()echo“Begin”echo“Begin”echo$a$b$c echo$a$b$c echo$1$2$3 echo$1$2$3 echo “End”echo “End”a=5a=5b=10b=10c=99c=99abc First Second Thirdabc First Second Third$ex13$ex13BeginBegin5 10 995 10 99First Second ThirdFirst S
18、econd ThirdEndEndn nset命令显示迄今为止所定义的全部变量显示迄今为止所定义的全部变量设定位置参数值设定位置参数值#cat setpos#cat setposecho dateecho dateset dateset dateecho$2$3$6echo$2$3$6echo$0$1$2$3$4$5$6echo$0$1$2$3$4$5$6$setpos$setposSun Sep 28 16:48:46 CST 1997Sun Sep 28 16:48:46 CST 1997Sep 28 1997Sep 28 1997setpos Sun Sep 28 16:48:46 CS
19、T 1997setpos Sun Sep 28 16:48:46 CST 1997改变执行改变执行shellshell脚本时的选项设定脚本时的选项设定n nset-set-标记参数标记参数设置标记设置标记n nset+set+标记参数标记参数关闭标记关闭标记n n标记参数标记参数n n xx在完成参数在各命令行中的替换并在在完成参数在各命令行中的替换并在执行该命令行之前,先显示该行内容。执行该命令行之前,先显示该行内容。行首行首“”。n n vv使使shellshell对以后各个语句行都按原样对以后各个语句行都按原样先在屏幕上显示出来,然后才执行命令先在屏幕上显示出来,然后才执行命令行,并显示
20、结果。行,并显示结果。$cat ex8$cat ex8 set x set x echo“current shell$-”echo“current shell$-”set+x set+x set v set v echo“current shell$-”echo“current shell$-”$ex8$ex8+current shell x+current shell xcurrent shell xcurrent shell xcurrent shell$-current shell$-current shell vcurrent shell vn nset命令pp显示环境变量显示环境变量
21、$setsetBASH=/bin/bashBASH=/bin/bashBASH_VERSINFO=(0=3 1=2 2=25 3=1 BASH_VERSINFO=(0=3 1=2 2=25 3=1 4=release 5=x86_64-redhat-linux-gnu)4=release 5=x86_64-redhat-linux-gnu)BASH_VERSION=3.2.25(1)-releaseBASH_VERSION=3.2.25(1)-releaseCLASSPATH=/usr/local/staf/samples/demo/STAFDemo.jar:/CLASSPATH=/usr/l
22、ocal/staf/samples/demo/STAFDemo.jar:/usr/local/staf/lib/JSTAF.jar:usr/local/staf/lib/JSTAF.jar:COLORS=/etc/DIR_COLORSCOLORS=/etc/DIR_COLORSCOLUMNS=132COLUMNS=132CVS_RSH=sshCVS_RSH=ssh$set str=ok$set str=ok 就是将变量就是将变量就是将变量就是将变量strstr的值设置成字符串的值设置成字符串的值设置成字符串的值设置成字符串“OK”OK”p设置环境变量Set表达式n nset命令setset的的
23、的的/a/a参数就是让参数就是让参数就是让参数就是让SETSET可以支持数学符号进行加减等一可以支持数学符号进行加减等一可以支持数学符号进行加减等一可以支持数学符号进行加减等一些数学运算些数学运算些数学运算些数学运算!支持的数学运算包含(优先权递减)支持的数学运算包含(优先权递减)支持的数学运算包含(优先权递减)支持的数学运算包含(优先权递减):()()分组分组分组分组 !-!-一元运算符一元运算符一元运算符一元运算符 */%/%算数运算符算数运算符算数运算符算数运算符 +-+-算数运算符算数运算符算数运算符算数运算符 逻辑移位逻辑移位逻辑移位逻辑移位&按位按位按位按位“与与与与”按位按位按位
24、按位“异异异异”|按位按位按位按位“或或或或”=*=/=%=+=-=*=/=%=+=-=赋值赋值赋值赋值&=|=,&=|=,表达式分隔符表达式分隔符表达式分隔符表达式分隔符 p设置数值运算用法示例:用法示例:用法示例:用法示例:set/a num=2*10,set/a num=2*10,这样变量这样变量这样变量这样变量numnum的值将变为:的值将变为:的值将变为:的值将变为:20 20 改变执行改变执行shellshell脚本时的选项设定脚本时的选项设定n nset-set-标记参数标记参数设置标记设置标记n nset+set+标记参数标记参数关闭标记关闭标记n n标记参数标记参数n n x
25、x在完成参数在各命令行中的替换并在在完成参数在各命令行中的替换并在执行该命令行之前,先显示该行内容。执行该命令行之前,先显示该行内容。行首行首“”。n n vv使使shellshell对以后各个语句行都按原样对以后各个语句行都按原样先在屏幕上显示出来,然后才执行命令先在屏幕上显示出来,然后才执行命令行,并显示结果。行,并显示结果。$cat ex8$cat ex8 set x set x echo“current shell$-”echo“current shell$-”set+x set+x set v set v echo“current shell$-”echo“current shell
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- shell 编程 培训
限制150内