Linux_2(shell编程).ppt





《Linux_2(shell编程).ppt》由会员分享,可在线阅读,更多相关《Linux_2(shell编程).ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章shell编程编程qLinuxshell是是一一个个命命令令解解释释器器,用用来来接受并执行用户命令;接受并执行用户命令;qshell环环绕绕在在Linux内内核核的的外外层层,它它是是Linux操作系统和用户之间的接口;操作系统和用户之间的接口;qLinux下下最最常常用用的的shell bash。bash是是大大多多数数Linux发发行行套套件件的的缺缺省省shell。q在在命命令令行行输输入入命命令令时时,每每次次输输入入一一个个命命令令,立立即即可可得得到到系系统统的的响响应应。但但如如果果经经常常要要依依次次执执行行一一组组命命令令,可可利利用用shell程程序来实现序来
2、实现qShell程程序序是是放放在在一一个个文文件件中中的的一一系系列列的的Linux命令命令q执执行行shell程程序序时时,由由Linux逐逐条条解解释释和和执行程序中的每个命令执行程序中的每个命令一、一、shell程序文件程序文件shell程程序序文文件件是是一一个个特特殊殊的的文文本本文文件件,其其内内容容包包含:含:q一系列可在一系列可在shell提示符下执行的命令提示符下执行的命令qshell提供的专用的命令和控制语句提供的专用的命令和控制语句shell程程序序文文件件的的运运行行过过程程是是将将shell程程序序文文件件中中的的命令依次执行命令依次执行二、二、shell程序文件的
3、建立程序文件的建立shell程程序序文文件件可可用用任任何何一一个个文文件件编编辑辑器器(如如vi)来来建立建立用用vi编辑器建立编辑器建立shell程序文件程序文件shex1的步骤:的步骤:键入命令键入命令“vishex1”,启动,启动vi;按命令按命令“i”,进入,进入vi的插入状态;的插入状态;输入程序文件内容;输入程序文件内容;按按键键,再再键键入入“;”,切切换换到到vi的的命命令令状状态;态;在在“:”后键入命令后键入命令“wq”,即保存文件内容,即保存文件内容后,退出后,退出vi。例:例:建立建立shell程序程序shex1,其内容为:,其内容为:clearcal109cal20
4、9cal309功功能能:先先清清屏屏,再再显显示示09年年的的1、2、3月月份份的的月月历历三、三、shell程序运行的程序运行的2种方法种方法运行运行shell程序有两种方法:程序有两种方法:q在在shell环环境境下下,将将shell程程序序文文件件作作为为子子shell程序被调用执行程序被调用执行sh例:例:shshex1q将将shell程程序序文文件件视视作作命命令令来来执执行行(因因此此,shell程程序序文文件件可可以以看看作作是是将将各各种种命命令令组组合合在在一一起起而而形形成成的的新新命令),此时必须赋予命令),此时必须赋予shell程序文件执行权限程序文件执行权限$例:例:
5、$chmoda+xshex1给程序文件赋予可执行属性给程序文件赋予可执行属性$/home/user1/shex1以完整的路径名键入程序名以完整的路径名键入程序名带参数的运行命令带参数的运行命令q运运行行命命令令中中有有参参数数和和无无参参数数的的2种种情情况况,分分别别称为称为带参数的运行命令带参数的运行命令和和不带参数的运行命令不带参数的运行命令q在在shell程程序序中中可可使使用用的的形形参参规规定定为为只只能能是是:$0、$1、$2、$9,共,共10个个当当程程序序运运行行时时,命命令令行行中中的的、依依次次赋赋值值给给$1、$2、,通通常常称称运运行行命命令令中中所所带带的的参数为参
6、数为实参实参q$0是是一一个个特特殊殊的的形形参参,其其值值规规定定为为当当前前运运行行的的shell程序命令本身程序命令本身例:建立例:建立shell程序程序shex3,其内容为:,其内容为:clearcal$109cal$209cal$309执行时输入命令的形式为:执行时输入命令的形式为:$shshex3123则执行结果如则执行结果如p.143图图5-3所示所示第一个实参值是第一个实参值是1,运行时代换给程序中的形参,运行时代换给程序中的形参$1,第二个实参值是第二个实参值是2,运行时代换给程序中的形参,运行时代换给程序中的形参$2,第三个实参值是第三个实参值是3,运行时代换给程序中的形参
7、,运行时代换给程序中的形参$3,命令命令shift作用作用由由于于形形参参个个数数有有限限(10个个),当当参参数数较较多多时时,可可通过命令通过命令shift来移动形参与实参的对应关系来移动形参与实参的对应关系执执行行一一次次shift后后,$1、$2、变变为为依依次次与与对应对应再再执执行行一一次次shift后后,$1、$2、变变为为依依次次与与对应,依此类推对应,依此类推例:建立例:建立shell程序程序shex2,其内容为:,其内容为:echo$0$1$2shiftecho$0$1$2运行时情况如下:运行时情况如下:#/root/shex2yesterdaytodaytomorrow/
8、root/shex2yesterdaytoday/root/shex2todaytomorrow#可可见见:$0始始终终是是当当前前运运行行的的shell程程序序命命令令本本身身,即即/root/shex3四、四、shell变量变量shell程序中允许使用程序中允许使用3种类型的变量:种类型的变量:q系系统统变变量量也也称称环环境境变变量量,它它可可将将值值传传给给shell运运行行的的其其他他命命令令或或shell程程序序使使用用,也也就就是是说说系系统统变变量量是是全局变量全局变量q内内部部变变量量由由系系统统提提供供,与与环环境境变变量量不不同同,用用户户不不能修改能修改q用用户户变变量
9、量由由用用户户定定义义,是是在在当当前前shell中中使使用用的的局局部部变变量量,不不能能被被在在shell下下运运行行的的其其他他命命令令或或其其它它shell程序使用程序使用通通过过shell提提供供的的命命令令set,可可以以查查看看当当前前shell下下定定义义的一系列变量及其值的一系列变量及其值变量赋值变量赋值格式:格式:=功能:将等号右边的字符串赋给等号左边的变量功能:将等号右边的字符串赋给等号左边的变量变变量量名名可可以以由由任任意意字字符符、数数字字或或下下划划线线组组成成,但但数数字不能作为变量名的首字符。字不能作为变量名的首字符。变量名不能包含空格、惊叹号字符变量名不能包
10、含空格、惊叹号字符变量名不能使用变量名不能使用shell中保留的关键词等符号中保留的关键词等符号变变量量名名不不能能多多于于一一个个词词,因因为为shell使使用用空空格格分分析析命命令令、定定界界命命令令名名和和参参数数,所所以以若若字字符符串串中中含含有有空空格格,则在字符串上加上引号则在字符串上加上引号例:例:name1=MARYname2=XWindow引用变量引用变量格式:格式:$功功能能:引引用用变变量量的的值值。只只要要在在变变量量名名前前加加上上“$”字字符,变量名即将变量值取代符,变量名即将变量值取代例:例:#name2=$name1将变量将变量name1值赋予变量值赋予变量
11、name2#echo$name1在屏幕上显示变量在屏幕上显示变量name1的值的值释放变量释放变量格式:格式:unset功功能能:释释放放一一个个现现存存的的shell变变量量。要要慎慎用用unset*,因为它将删除全部,因为它将删除全部shell变量变量例:例:#unsetname1五、五、shell程序中的控制流程序中的控制流条件判断命令条件判断命令test条条件件表表达达式式是是控控制制程程序序流流程程的的关关键键,shell提提供供的的test命命令令适适用于条件控制流和循环控制流用于条件控制流和循环控制流格式:格式:test功能:返回表达式成立与否的状态值,功能:返回表达式成立与否的
12、状态值,如果表达式成立,则如果表达式成立,则test返回状态值返回状态值0,反之,反之,test返回状态值非返回状态值非0值。值。(常用的表达形式见参考书(常用的表达形式见参考书P41)例:例:q判断文件判断文件/etc目录下文件目录下文件profile是否存在是否存在test-e/etc/profileq当运行当运行shell程序程序shex时,判断是否带参数时,判断是否带参数test-z$1(-z如字符串长度为如字符串长度为0,返回真值,返回真值)q判断变量判断变量value是否大于等于是否大于等于1并小于并小于3test$valuege1-a$value-lt3(-a与操作与操作-eq等
13、于返回真等于返回真-ge大于或等于返回真大于或等于返回真)条件控制流条件控制流if-then-else结构结构ifthenelsefi通常采用通常采用“test”,当条件成立,则,当条件成立,则返回返回0;条件不成立,则返回一个非;条件不成立,则返回一个非0值值 注意:其中注意:其中if和和fi必须配对出现必须配对出现if-then-fi结构结构ifthenfi(实例实例1:p43):如如果果/etc目目录录中中的的文文件件profile存存在在,则则将将其其复复制制到到/home中中,并并分分屏屏显显示示/home下下的的profile内内容容;否否则则在在屏幕上显示信息屏幕上显示信息“pr
14、ofileisnotexist!”iftest-e/etc/profilethencp/etc/profile/homecat/etc/profile|moreelseecho“profileisnotexist!”fi实例实例3:P44建建立立程程序序文文件件shp3,存存放放在在当当前前目目录录下下。如如果果shp3运运行行时时未未带带参参数数,则则在在屏屏幕幕上上显显示示信信息息“Parameterislost!”,并并结结束束程程序序运运行行;如如果果shp3运运行行时时带带一一个个参参数数,则则判判断断参参数数所所指指定定的的文文件件是是否否存存在在,如如果果存存在在则则复复制制该该
15、文文件件到到/home;否否则则先先在在屏屏幕幕上上显显示示信信息息“Filenotfound!”,然后显示程序本身。,然后显示程序本身。判:带参数否判:带参数否?显示不带参数显示不带参数判:参数指定文件存在否判:参数指定文件存在否?复制该文件到复制该文件到/home显示文件不存在显示文件不存在显示程序本身显示程序本身结束程序结束程序nnnyyiftest-z$1-z判判$1存在否存在否thenechoParameterislost!如带一参数如带一参数elseiftest-e$1则则$1肯定在肯定在thencp$1/homeelseechoFilenotfound!cat$0$0指程序本身指
16、程序本身fifi(实例实例6:p48):编编写写shell程程序序shp6,存存放放在在当当前前目目录录下下。运运行行shp6时时带一个正整数参数,将数值存入变量带一个正整数参数,将数值存入变量value;如如果果该该参参数数大大于于等等于于1但但小小于于3,则则在在屏屏幕幕上上显显示示“valueislessthan3andnotlessthan1”;如如果果该该参参数数大大于于等等于于3,则则在在屏屏幕幕上上显显示示“valueisnotlessthan3”;最后以最后以“value=xx”的形式显示变量的形式显示变量value的值。的值。value=$1iftest$value-ge1-
17、a$value-lt3thenechovalueislessthan3andnotlessthan1fiiftest$value-ge3thenechovalueisnotlessthan3fiechovalue=$value(实例实例10:p51):编编1个个shell程程序序shp10,当当以以命命令令“shp10 xxyy”执执行行时时,(其其中中xx为为年年份份参参数数,yy为为季季度度参参数数),能能自自动动清清屏屏,并并显显示示指指定定年年份份指指定定季季度度中中的的3个个月的月历。月的月历。cleark=$2iftest$k-eq1thencal1$1cal2$1cal3$1fi
18、iftest$k-eq2thencal4$1cal5$1cal6$1fiiftest$k-eq3thencal7$1cal8$1cal9$1fiiftest$k-eq4thencal10$1cal11$1cal12$1ficase结构结构casein字符串字符串1);字符串字符串n);*);esac说明:说明:其中,字符串中可含通配符。其中,字符串中可含通配符。如如果果能能同同时时匹匹配配多多个个字字符符串串,则则只只能能执执行行第第一一个个匹配字符串后的匹配字符串后的。循环控制流循环控制流for-in结构结构forindodone其其中中,中中的的值值与与值值之之间间用用空空格格分分隔。隔。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux_2 shell 编程

限制150内