《linux课程资源Shell脚本基础课件.ppt》由会员分享,可在线阅读,更多相关《linux课程资源Shell脚本基础课件.ppt(21页珍藏版)》请在三一办公上搜索。
1、模块2 Linux进阶-系统管理,主讲人:芮坤坤,2.5 Linux 进程及作业管理,2.5.1 Bash Shell基础,Shell也是Unix/Linux最重要的软件之一,Shell提供了用户与操作系统之间通讯的方式。这种通讯可以以交互方式,也可以Shell 脚本(非交互)方式执行。Shell脚本是存放在文件中的一串Shell和操作系统命令,Shell脚本可以被重复使用,常见的Shell,Bourne Shell是由Steven Bourne 编写的,是Unix的默认的Shell。Bourne Shell的Shell编程能力很强。但不能处理基于命令的用户交互模式。bash Shell是Bo
2、urne Shell的增强版C shell是由加利福尼亚大学伯克利分校的Bill Joy编写,能提供Bourne Shell所不能处理的用户交互模式,比如命令补全、命令别名、历史命令替换等等。C Shell的编程能力不如Bourne shell,但其语法和C语言类似,所以C程序员将发现C Shell很顺手Korn Shell是由Dave Korn 编写的。Korn shell融合了C Shell和Bourne Shell的优点,并和Bourne shell完全兼容。Korn shell的效率很高,其命令交互界面和编程交互界面都很不错,bash Shell,命令列表使用分号隔开使用&条件隔开使用
3、|条件隔开,rootsrv#cd/boot;llrootsrv#service atd restart&chkconfig atd onrootsrv#cd/bot|mkdir/bot,bash Shell,在子Shell中运行命令命令别名命令替换大括号替换变量替换算术替换命令替换,rootsrv#(cd/boot;ll)rootsrv#alias h=head rootsrv#mkdir-p 24/Season1,2,3,4,5,6,7,8rootsrv#echo$($PRICE*NUMBER)rootsrv#mkdir reports.$(date+%d%b%y),标准输入/输出,在Lin
4、ux系统中,输入流被称做标准输入(STDIN,文件编号0);输出流有二种,标准输出(STDOUT,文件编号1)、标准错误(STDERR,文件编号2),标准输出是终端程序执行后输出的正确结果,标准输入/输出,标准输出重定向使用“”将输出写入文件,如果指定的文件已存在将会删除文件中原有的内容使用“”将输出追加到文件,如果指定的文件已存在将会把输出附加到文件中标准错误重定向使用“2”将输出写入文件,如果指定的文件已存在将会删除文件中原有的内容使用“2”将输出追加到文件,如果指定的文件已存在将会把输出附加到文件中标准输入重定向bash Shell可以使用“”将命令中接收标准输入的途径由默认的键盘改为指
5、定的文件,管道,管道功能只需在前一个命令和后一个命令中间使用“|”分隔,这样前一个命令的输出就会成为后一个命令的输入,rootsrv#netstat-tunlp|grep httpdrootsrv#grep-v#/boot/grub/grub.conf|grep-v$rootsrv#ll|head-n 10|tail-n 3,2.5.2 正则表达式,正则表达式,又称正规表示法、常规表示法,计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。,正则表达式,正则表达式应用实例应用1.验证
6、用户名和密码:(a-zA-Zw5,15$)正确格式:A-Za-z_0-9组成,并且第一个字必须为字母616位;2.验证电话号码:((d3,4-)d7,8$)正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;3.验证手机号码:13|4|5|7|80-9d8$;4.验证身份证号(15位或18位数字):d140-9,0-9xX;5.验证Email地址:(w+(-+.w+)*w+(-.w+)*.w+(-.w+)*$);6.只能输入由数字和26个英文字母组成的字符串:(A-Za-z0-9+$);7.整数或者小数:0-9+(.0-9+)0,1$,2.5.3 高级文本处理命令,sort命令的功能
7、是对文件中的各行进行排序。语法:sort 选项 文件说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“-”,则表示排序内容来自标准输入。sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。,-m 若给定文件已排好序,合并文件。-c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。-u 对排序后认为相同的行只留其中一行。-o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,
8、sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。改变缺省排序规则的选项主要有:-d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。-f 将小写字母与大写字母同等对待。-I 忽略非打印字符。-M 作为月份比较:“JAN”-r 按逆序输出排序结果。,2.5.4 Shell脚本,Shell脚本并不是一个复杂的程序语言,其按行解释的。虽然在Linux中扩展名并没有实际的作用但一般为了方便阅读,bash Shell的脚本文件一般使用“sh”作为扩展名。一行中“#”之后的内容表示是注释,注释在执行过程中将被忽略。在Shell脚本文件的第一行应该指定向哪个解释器发送指令,目前在R
9、HEL5中默认使用bash Shell,所以第一行应该是“#!/bin/sh”。在执行已编写好的脚本时可以使用二种方式:对于有执行权限的脚本文件可以使用“./”的方式执行;对于没有执行权限的脚本文件可以使用“sh”的方式执行。Linux系统中每个进程都是有寿命的,Shell脚本,变量局部变量环境变量,rootsrv#strA=ctu rootsrv#strB=dod rootsrv#echo$strArootsrv#export strA,Shell脚本,向脚本传递参数在脚本中可以使用“$1”接受传递给脚本的第一个参数、使用“$2”接受传递给脚本的第二个参数,除了可以获得每个参数值以外,还可以
10、使用“$*”接受所有的参数、使用“$0”获取当前脚本的名称、使用“$#”获取传递给脚本的参数个数、使用“$”获取当前脚本运行的PID,rootsrv#cat sh2.sh#!/bin/shecho Script Name Is:$0echo First Variable:$1echo Second Variable:$2echo Tertiary Variable:$3echo All Variable:$*,Shell脚本,条件测试字符串测试数值测试文件状态测试逻辑操作符,Shell脚本,判断结构,if;then#当条件为真时执行的内容fiif;then#当条件为真时执行的内容else#当条
11、件为假时执行的内容fiif;then#当条件1为真时执行的内容elif;then#当条件2为真时执行的内容else#当条件1和条件2为假时执行的内容fi,Shell脚本,多选择语句,case 值 in模式1)#当符合模式1时执行的内容;模式2)#当符合模式2时执行的内容;.;esac,Shell脚本,循环结构,while 条件do循环体doneuntil 条件do循环体donefor(初始值;限制值;步长)do循环体donefor var in con1 con2 con3do循环体done,Shell脚本,循环结构,while 条件do循环体doneuntil 条件do循环体donefor(初始值;限制值;步长)do循环体donefor var in con1 con2 con3do循环体done,