linux经典课间来自清华.ppt

上传人:工**** 文档编号:567687857 上传时间:2024-07-22 格式:PPT 页数:36 大小:2.39MB
返回 下载 相关 举报
linux经典课间来自清华.ppt_第1页
第1页 / 共36页
linux经典课间来自清华.ppt_第2页
第2页 / 共36页
linux经典课间来自清华.ppt_第3页
第3页 / 共36页
linux经典课间来自清华.ppt_第4页
第4页 / 共36页
linux经典课间来自清华.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《linux经典课间来自清华.ppt》由会员分享,可在线阅读,更多相关《linux经典课间来自清华.ppt(36页珍藏版)》请在金锄头文库上搜索。

1、第八章第八章ShellShell脚本脚本配置文件与配置文件与sourcesource命令命令特殊符号:特殊符号:? * ; & | ? * ; & | 重定向重定向管道:管道:cut sort wc uniq tee tr grepcut sort wc uniq tee tr grep 复习复习正则表达式正则表达式Shell ScriptsShell Scripts内容提要内容提要正则表达式正则表达式. . 代表一个任意字符,一定要有一个字符存在代表一个任意字符,一定要有一个字符存在? ? 匹配匹配0 0次或者次或者1 1次,也可以用于表示单一字符次,也可以用于表示单一字符* * 匹配任意次

2、,也可以用于表示任意字符匹配任意次,也可以用于表示任意字符listlist 列表中的字符列表中的字符rangerange 列表中范围内的字符列表中范围内的字符, ,范围用范围用“-”-”分隔分隔正则表达式正则表达式正则表达式正则表达式listlist 不属于不属于listlist的元素的元素, ,与与 list list 相反相反range range 不属于不属于rangerange的元素,与的元素,与 rangerange相反相反nn 与前一个相同条件连续匹配与前一个相同条件连续匹配n n个个n,mn,m 与前一个相同条件连续匹配与前一个相同条件连续匹配n n到到mm个个正则表达式正则表达

3、式正则表达式实验,假设有如下文本,文件名称为正则表达式实验,假设有如下文本,文件名称为t t:hi, i am eric, my phone is 023-68587573hi, i am eric, my phone is 023-68587573mobile phone is 13667620661mobile phone is 13667620661at changsha , i will use 0731-6858670at changsha , i will use 0731-6858670my id is 22334455667my id is 22334455667my emai

4、l is eric-my email is eric-may be u can also use ERIC-HXY163.COMmay be u can also use ERIC-HXY163.COMcall me pleasecall me pleasebyebye正则表达式正则表达式问题:如何查找文本中的移动电话?如何查找文本中的移动电话?grep -e 130-99 grep -e 130-99 如何查找文本中的固定电话号码?如何查找文本中的固定电话号码?grep -e 00-92,3-0-97,8 grep -e 00-92,3-0-97,8 正则表达式正则表达式什么是什么是Shel

5、l ScriptsShell Scripts?一系列连续命令一系列连续命令如何执行?如何执行?使文件具备执行属性,然后执行使文件具备执行属性,然后执行使用使用shsh命令,如命令,如sh ash aShell ScriptsShell Scripts建立第一个脚本:建立第一个脚本:vi test01vi test01输入输入 echo hello scripts worldecho hello scripts world保存退出保存退出增加可执行权限:增加可执行权限:chmod a+x test01chmod a+x test01执行执行./test01./test01去掉可执行权限:去掉可执

6、行权限: chmod a-x test01chmod a-x test01执行执行./test01./test01执行执行 sh test01sh test01Shell ScriptsShell Scripts默认变量类型是字符串,其他变量声明用默认变量类型是字符串,其他变量声明用d d:语法:语法:declare -afir declare -afir 变量名称变量名称=初始值初始值 含义:含义:-a-a定义数组,定义数组,-f-f定义函数,定义函数,-I-I定义整数,定义整数,-r-r定义只读变量定义只读变量Shell ScriptsShell Scripts变量声明举例:变量声明举例:

7、a1=10a1=10b1=20b1=20c1=$a1*$b1c1=$a1*$b1echo $c1echo $c1declare -i a2=10 declare -i a2=10 declare -i b2=20declare -i b2=20declare -i c2=$a2*$b2declare -i c2=$a2*$b2echo $c2echo $c2实验实验Shell ScriptsShell Scripts变量声明注意事项:变量声明注意事项:变量赋值等号两边不能有空格变量赋值等号两边不能有空格如果变量值包含空格,最好使用引号。如果变量值包含空格,最好使用引号。如果没有引号,那么该值中

8、的第如果没有引号,那么该值中的第二个单词会当作命令执行二个单词会当作命令执行。例如:。例如:aa=b pwdaa=b pwdaa=b pwddaa=b pwddechoecho命令打印变量时,最好用引号括起,否则命令打印变量时,最好用引号括起,否则echoecho将解析其中的特殊符将解析其中的特殊符号,列出当前目录下面的文件名称,例如:号,列出当前目录下面的文件名称,例如:aa=*aa=*echo $aaecho $aaaa=pwd ; $aaaa=pwd ; $aaShell ScriptsShell Scriptsshellshell算术运算(算术运算(1/21/2):):可以使用可以使用

9、 shell shell 结构来执行简单的整数运算。只需将特定的算术表达式结构来执行简单的整数运算。只需将特定的算术表达式用用 $( $( 和和 ) 括起,括起,bash bash 就可以计算表达式就可以计算表达式举例:举例:echo $( 100 / 3 )echo $( 100 / 3 )myvar=56myvar=56echo $( $myvar + 12 )echo $( $myvar + 12 )echo $( $myvar - $myvar )echo $( $myvar - $myvar )myvar=$( $myvar + 1 )myvar=$( $myvar + 1 )ech

10、o $myvarecho $myvarShell ScriptsShell Scripts跟用户交互跟用户交互readread:echo input u name:echo input u name:read nameread nameecho u name is $nameecho u name is $nameShell ScriptsShell Scripts常用的逻辑判断:常用的逻辑判断:-f-f 检测文件是否存在检测文件是否存在-d-d 检测目录是否存在检测目录是否存在-e-e 检测对象是否存在,对象可以是任何东西检测对象是否存在,对象可以是任何东西-r-r 文件是否具备可读属性文件

11、是否具备可读属性-w-w 是否可写是否可写-x-x 是否可执行是否可执行-s-s 文件是否非空文件是否非空-u -u 文件是否具备文件是否具备SUIDSUID-g-g 文件是否具备文件是否具备SGIDSGID-k-k 文件是否具备文件是否具备sticky bitsticky bit属性属性& 逻辑与逻辑与| |逻辑或逻辑或Shell ScriptsShell Scripts常用的整数运算符:常用的整数运算符:-eq 等于等于-ne 不等于不等于-lt 小于小于-gt 大于大于-le 小于或等于小于或等于-ge 大于或等于大于或等于Shell ScriptsShell Scripts常用的字符串

12、运算符:常用的字符串运算符:str 若若str为非空字符串则为真为非空字符串则为真str1=str2 若若str1与与str2相同则为真相同则为真str1!=str2 若若str1与与str2不相同则为真不相同则为真str1str2 若若str1比比str2排序较大则为真排序较大则为真-z str 若若str长度为长度为0则为真则为真-n str 若若str长度大于长度大于0则为真则为真Shell ScriptsShell Scripts字符串与数字比较的区别:字符串与数字比较的区别:myvar=1if $myvar -eq 01 ; then =相等否?相等否? echo myvar is

13、number 1 fiif $myvar = 01 ; then =相等否?相等否? echo myvar is char 01fiShell ScriptsShell Scripts字符串比较经典问题(引号重要性):字符串比较经典问题(引号重要性):var1=who am ivar2=whoif $var2 = who ; then echo ohofiif $var1 = who am i ; then echo yeahfi应用字符串变量时应用字符串变量时最好把双引号加上最好把双引号加上Shell ScriptsShell Scripts条件判断:条件判断:最简单的条件判断最简单的条件判

14、断if condition ;then actionfi注意:注意:在中,只能有一个判断式在中,只能有一个判断式在与之间,可以使用在与之间,可以使用&或或|组合组合Shell ScriptsShell Scripts条件判断:条件判断:复杂的复杂的if if语句:语句:if condition ; then actionelif condition2 ; then action2elif condition3 ; then else actionxfiShell ScriptsShell Scripts问题问题1 1:如果用户输入如果用户输入Y或者或者y就打印就打印hello,否则打印,否则打

15、印bye,这个脚本该如何写?,这个脚本该如何写?echo press any key to continueread keyif $key = y | $key = Y ; then echo helloelse echo byefiShell ScriptsShell Scripts条件判断:条件判断:分支判断:分支判断:case 字符串字符串 in 串串1)动作动作1; 串串2)动作动作2; *)动作动作3 esacShell ScriptsShell Scripts问题:问题:根据用户输入字符串的长度判断,如果长度为根据用户输入字符串的长度判断,如果长度为3,就在其前面加入,就在其前面加

16、入00,如果为,如果为4,则加入则加入0,其他情况则加入,其他情况则加入haha_,打印最后结果,该如何写?,打印最后结果,该如何写?echo input a string:read strcount=echo $str|wc -mcase $count in4) str=00$str ;5) str=0$str ;*) str=haha_$stresacecho now str is :$strShell ScriptsShell Scripts循环:循环:forfor语句:语句:for(条件条件1;条件条件2;条件条件3)do actiondonefor 变量变量 in 变量变量1 变量变

17、量2 .do actiondone注意:不带注意:不带in部分时参数有命令行提供部分时参数有命令行提供Shell ScriptsShell Scripts简单简单forfor实例:实例: for i in eric carol hexy do echo hello $i done for a in ./* do if -f $a ; then echo $a fi doneShell ScriptsShell Scripts问题:如何读取所有命令行参数进行显示?问题:如何读取所有命令行参数进行显示?for(i=1;i=10;i+)for(i=1;i=10;i+)do do echo $(exp

18、r $i * 4)echo $(expr $i * 4)donedoneShell ScriptsShell Scripts循环:循环:whilewhile语句:只要条件满足就一直执行语句:只要条件满足就一直执行while 条件条件doactiondoneShell ScriptsShell Scripts循环:循环:untiluntil语句:直到满足条件才退出语句:直到满足条件才退出until 条件条件do动作动作doneShell ScriptsShell Scripts问题问题1:分别用:分别用while和和until来实现打印来实现打印1到到10数字数字declare -i i=1wh

19、ile $i -le 10 do echo $i i=i+1doneuntil $i -gt 10 do echo $i i=i+1doneShell ScriptsShell Scripts问题问题2:写一个脚本,计算所有参数之和:写一个脚本,计算所有参数之和declare - i i=1declare - i sum=0while $i -le 20 do sum=sum +aa=a+1doneecho sum is $sumShell ScriptsShell Scripts函数定义函数定义语法:语法:函数名称函数名称() 函数体函数体函数调用方法:函数调用方法:函数名称函数名称Shel

20、l ScriptsShell Scripts函数举例:函数举例:myvar=hellomyfunc() myvar=one two three for x in $myvar do echo $x done #invoke functionmyfuncecho $myvar $xShell ScriptsShell Scripts解决函数中的名字空间问题,使用解决函数中的名字空间问题,使用local:myvar=hellomyfunc() local myvar=one two three for x in $myvar do echo $x done #invoke functionmyfuncecho $myvar $xShell ScriptsShell Scripts脚本调试:脚本调试:sh -nv scriptssh -nv scripts-n 不执行脚本,查询脚本语法,有错误就列出不执行脚本,查询脚本语法,有错误就列出-v 执行脚本之前,先将脚本内容提示在屏幕上执行脚本之前,先将脚本内容提示在屏幕上查看脚本实例(创建学生帐号)查看脚本实例(创建学生帐号)Shell ScriptsShell Scripts正则表达式正则表达式setset$(.)$(.)readread逻辑判断逻辑判断if ifforforwhilewhileuntiluntil函数函数小结小结

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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