linux Shell programmingppt课件_第1页
linux Shell programmingppt课件_第2页
linux Shell programmingppt课件_第3页
linux Shell programmingppt课件_第4页
linux Shell programmingppt课件_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ShellProgramming,Content,Shell综述什么是Shell?为什么要用Shell?创建和执行Shell程序Shell程序设计的语法变量、条件测试、条件语句、重复语句、命令表和语句块、函数实例,1.ShellOverview,Shell用户和操作系统之间的接口作为核外程序而存在,Shell:用户和操作系统之间的接口,csh其它程序bashX窗口系统,Shell:作为核外程序而存在,内核,各种不同的Shell,Shell的双重角色,命令解释程序Linux的开机启动过程;进程树Shell的工作步骤打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令独立的程序设计语言解释器Shell编程非常容易掌握,可帮助用户完成特定的任务、提高维护系统的效率。,Shell的元字符(通配符),.上一级目录.当前工作的目录用户目录a-z*小写字母开头的所有字符串A-Z*大写字母开头的所有字符串$bash提示符,也是shell的位置变量参数thenecho“goodguy!”elseecho“comeondontbesilly!”fiexit0,执行脚本文件,方法1:$shscript_file方法2:chmod+xscript_file(chown,chgrpoptionally)./script_file方法3:sourcescript_file,用户环境,.bash_profile,.bash_logout,.bashrcfiles.bash_profile:用户登录时被读取,其中包含的命令被bash执行.bashrc:启动一个新的shell时读取并执行.bash_logout:登录退出时读取执行Alias(设置别名)alias/unaliascommand环境变量exportcommand(exportenv/setset)export,env(同一行上多个命令的分隔符),if语句(2),例1(.bash_profile文件中)if-f/.bashrc;then./.bashrcfi例2#!/bin/shecho“Isthismorning?Pleaseansweryesorno.”readanswerif“$answer”=“yes”;thenecho“Goodmorning”elif“$answer”=“no”;thenecho“Goodafternoon”elseecho“Sorry,$answernotrecognized.Enteryesorno”exit1fiexit0,Example;str3|str4)statements;*)statements;esac,case语句(2),Example#!/bin/shecho“Isthismorning?Pleaseansweryesorno.”readanswercase“$answer”inyes|y|Yes|YES)echo“Goodmorning!”;no|n|No|NO)echo“Goodafternoon!”;*)echo“Sorry,answernotrecognized.”;esacexit0,Exampledolpr$filedoneexit0,Exampledoreadmenu_choicecase“$menu_choice”ina)do_something;b)do_anotherthing;q|Q)quit=y;*)echo“Sorry,choicenotrecognized.”;esacdone,Example;Finish)break;*)echo“Wrongchoice!Pleaseselectagain!”;esacdoneQuestion:用while语句模拟?,Shift命令,如果要向一个shell脚本传递信息,可以使用位置参数完成此功能。参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。参数从第一个开始,在第9个结束;每个访问参数前要加$符号。如果向脚本传送DidYouSeeTheFullMoon信息,下面讲解如何访问每一个参数。$0$1$2$3$4$5$6$7$8$9脚本名字DidYouSeeTheFullMoon这里只传递6个参数,7、8、9参数为空。shift命令用来将命令行参数左移。也可指定左移的位数:shift2$0$1$2$3$4$5$6$7$8$9脚本名字DidYouSeeTheFullMoonSeeTheFullMoon(shift2)$#减一$*减少,例子:shift.sh,comprehensiveexercises,cexe1:创建一个程序名为options的shell程序,对命令行参数的处理如下:命令行的第一个参数是-d,程序会运行date命令。命令行的第一个参数是-w,程序会显示目前已经登录系统的所有用户。命令行的第一个参数是-l,程序会显示以命令行第二个参数为名字的目录的内容。如果没有参数或者超过两个参数,发一个用法信息,将返回码设为10。如果提供的参数不在上述范围,发一个用法信息,将返回码设为20。,comprehensiveexercises,cexe2:在主目录下创建一个名为.waste的目录。编写一个名为myrm的shell程序,这个程序可以将要删除的文件移到.waste目录下,这个目录是你的回收站。这是一个非常有用的工具,可以用来恢复已经删除的文件。记住:UNIX系统没有取消删除(undelete)的功能。myrm包括以下选项,l列举回收站的内容,-d删除回收站的内容。,3.5命令表和语句块,命令表命令组合语句块,命令表,命令组合分号串联command1;command2;条件组合AND命令表格式:statement1statement2;,3.6函数,形式func()statements局部变量local关键字函数的调用funcpara1para2返回值return,函数的例子,例:#!/bin/bashhello()echohellotheretodaysdateis:dateechonowgoingtothefunctionhellohelloechobackfromthefunction#end,Exampleexit0SIGINTSIGKILLtrapechoTerminated-pleaseloginagain!SIGINTSIGKILL输入ctrl+c强制退出,之前将打印输出Terminated-pleaseloginagain!文字,捕获命令输出,语法$(command)command举例#!/bin/shecho“Thecurrentdirectoryis$PWD”echo“Thecurrentdirectoryis$(pwd)”exit0,算术扩展,expr命令$()扩展#!/bin/shx=0while“$x”ne10;doecho$xx=$($x+1)doneexit0,参数扩展,问题:批处理1_tmp,2_tmp,方法#!/bin/shi=0while“$i”ne10;dotouch“$i_tmp”i=$($i+1)doneexit0,4.综合练习,Install脚本CD唱盘管理程序,4.综合练习,Install脚本CD唱盘管理程序,要求:在一个文件夹下,有五个文件,分别是abc.pldef.plabc.confdef.confsample.mov1.将.pl文件拷贝到/usr/local/testpro下,如果没有该文件夹则先创建该文件夹再拷贝;如果已经存在相应的文件则先将旧文件移动到/usr/local/testproback目录下。,2.将.conf文件拷贝到/usr/local/etc下,如果没有该文件夹则先创建该文件夹再拷贝;如果已经存在相应的文件则先将旧文件移动到/usr/local/etcback目录下。3.将.mov文件拷贝到/usr/local/movies下,如果没有该文件夹则先创建该文件夹再拷贝;如果已经存在相应的文件则先将旧文件移动到/usr/local/moviesback目录下。,4.最后要求用户输入一个用户名和密码,以明文的形式存储到一个文件/usr/local/usepass.txt中最后打印出安装成功信息,结束程序,4.综合练习,Install脚本CD唱盘管理程序,设计,用文件进行数据存取Textprocessing:grepcommand/sedcommandComparedwithdatabase-useasimplefile,Tips:(1),主程序quit=nwhile“$quit”!=“y”;doset_menu_choicecase“$menu_choice”ina)add_records;r)remove_records;f)find_recordsy;u)update_records;q|Q)quit=y;*)echo“Sorry,choicenotrecognized.”;esacdone,Tips:(2),全局变量menu_choice功能模块add_records:输入歌曲名称与对应的专辑(CD唱盘)标题信息find_records:歌曲位于哪个专辑中,Tips:(3:1),Database:用一个普通文件充当,每一行是一首歌曲信息,歌名与专辑名用“”隔开。查找/模式匹配1.res=echo$records|grep“#”变量records中是否包含“”,将包含“”的内容赋给变量res,Tips:(3:2),2.songname=echo$records|grep-o.*#将变量records中“#”前面的内容取出,赋给变量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论