第4章Shell编程.ppt
《第4章Shell编程.ppt》由会员分享,可在线阅读,更多相关《第4章Shell编程.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ShellProgrammingUNIXShell程序程序设计Shell的双重特性:的双重特性:命令解释程序(命令解释器):命令解释程序(命令解释器):Shell解释用户输入的命令行,提交系统内核解释用户输入的命令行,提交系统内核处理,并将结果返回给用户;处理,并将结果返回给用户;Shell与与UNIX命令一样都是实用程序,但有区命令一样都是实用程序,但有区别。一旦用户注册到系统后,别。一旦用户注册到系统后,Shell就被系统装就被系统装入内存,并一直运行到用户退出系统之止;而一入内存,并一直运行到用户退出系统之止;而一般命令仅当被调用时,才由系统装入内存执行。般命令仅当被调用时,才由系统装入
2、内存执行。程序设计语言:程序设计语言:Shell本身也是一种可编程的程序设计语言。本身也是一种可编程的程序设计语言。做为用户与做为用户与Unix系统内核之间的界面,系统内核之间的界面,Shell接受、接受、解释并执行用户命令。解释并执行用户命令。Shell执行用户命令的工作过程大体上表现为这样执行用户命令的工作过程大体上表现为这样一个循环:一个循环:while(1)prompt(“command:”);/*打印提示符打印提示符*/read(command);/*读入并分析命令读入并分析命令*/execute(command);/*执行命令执行命令*/4.1 命令解释程序命令解释程序执行一个执行
3、一个shell命令行时,通常会自动打开三个标准文件,即:命令行时,通常会自动打开三个标准文件,即:标准输入文件(标准输入文件(stdin),通常对应终端的键盘;),通常对应终端的键盘;标准输出文件(标准输出文件(stdout)和标准错误输出文件()和标准错误输出文件(stderr),),这两个文件都对应终端的屏幕。这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。到标准输出文件,而将错误信息送到标准错误文件中。以上三个标准文件的文件标识符分别为以上三个标准文件的
4、文件标识符分别为0号、号、1号、号、2号。号。4.1.1 输入输出重定向输入输出重定向当标准文件描述符被分配给终端以外的对象,就称为当标准文件描述符被分配给终端以外的对象,就称为I/O重定向重定向,由由“”、“”、“”、“mydirlist$pwdmydirlist$pwdmydirlist$datemydirlist$catfile1file2file3用用,等符号改变标准流的方向,等符号改变标准流的方向,分析以下命令的结果:分析以下命令的结果:$(lsl;pwd;date)mydirlist$mailtomfile$myprogtestdatafile$commandstring,为,为“
5、行输入重定向行输入重定向”,较少使用。,较少使用。$myprogoutfile/*同时使用输入输出重定向同时使用输入输出重定向*/如果将标准输出和标准错误输出流都定向到同一文件,如果将标准输出和标准错误输出流都定向到同一文件,BShell中用中用2&1来实现,来实现,CShell中用中用&来实现。试分析:来实现。试分析:%ccabc.clog%ccabc.c&log$ccabc.clog$ccabc.c2&1log对于标准错误输出流的重定向,不同的对于标准错误输出流的重定向,不同的shell修改修改方法有所不同。方法有所不同。CShell%(ccabc.clog)&errorlog%(find
6、/-namefilea-print/dev/tty)&errorlog如果是重定向到不同文件,如果是重定向到不同文件,BShell用用2来指示标准错误输来指示标准错误输出:出:$ccabc.clog2errorlog$find/-namefilea-print2errorlog管道线实现了管道线实现了Unix命令功能的组合。命令功能的组合。它将一个命令(或程序)的输出作为另一个命令(或它将一个命令(或程序)的输出作为另一个命令(或程序)的输入。程序)的输入。记为记为a|b,表示把表示把a命令的输出作为命令的输出作为b命令的输入,命令的输入,实现了输出重定向和输出重定向功能的组合。实现了输出重定
7、向和输出重定向功能的组合。4.1.2 管道线$ls-ltempfile$wc-lerr|mailboberr$rmno_exist|echo“removefileerror!”占据终端显示的进程叫作占据终端显示的进程叫作“前台进程前台进程”;不占据终端显示的则叫作不占据终端显示的则叫作“后台进程后台进程”。一个终端可以同时运行一个前台进程和多个后台进程。一个终端可以同时运行一个前台进程和多个后台进程。4.1.3后台进程后台进程$mansh|lp&1 1557$kill-9$!后台命令(或程序)以符号后台命令(或程序)以符号“&”结束,结束,将立即返回将立即返回Shell提示符,同时在后台执行该
8、命令。提示符,同时在后台执行该命令。有些字符是对于有些字符是对于Shell有特殊意义的字符,常用于控制文件名的有特殊意义的字符,常用于控制文件名的组成,还用于构成组成,还用于构成Unix中广泛应用的正则表达式。中广泛应用的正则表达式。4.1.4通配符及特殊字符通配符及特殊字符*匹配任意字符串,匹配任意字符串,0或多个字符或多个字符?匹配单个字符匹配单个字符abc匹配匹配a、b、c这组字符中的一个这组字符中的一个!abc匹配这组字符以外的某个字符匹配这组字符以外的某个字符a-z匹配在匹配在a到到z这个范围内的某个字符这个范围内的某个字符!a-z匹配不在匹配不在a到到z这个范围内的某个字符这个范围
9、内的某个字符;分隔命令,标志命令结束,但不换行分隔命令,标志命令结束,但不换行&后台命令后台命令$变量的访问变量的访问()将小括号中所括的命令生成一个子将小括号中所括的命令生成一个子shell去执去执行行转义字符,它使紧跟其后的那个字符失去在转义字符,它使紧跟其后的那个字符失去在Shell中的特殊意义中的特殊意义$echo*$echo*特别要注意的是转义符的使用,分析以下命令的输特别要注意的是转义符的使用,分析以下命令的输出结果:出结果:$ls*abc file1 youx$echoHowareyou?How are youx$echoHowareyou?How are you?ShellSh
10、ell允许通过编程来完成复杂的功能处理,允许通过编程来完成复杂的功能处理,与高级语言相比,具有以下特点:与高级语言相比,具有以下特点:ShellShell是解释性的,多数高级语言是编译性是解释性的,多数高级语言是编译性的;的;ShellShell语言与高级语言处理的对象不同;语言与高级语言处理的对象不同;ShellShell与系统有密切的关系;与系统有密切的关系;ShellShell易编写、调试、灵活性较强,但速度易编写、调试、灵活性较强,但速度低;低;ShellShell作为命令级语言,命令组合功能很强。作为命令级语言,命令组合功能很强。4.2Shell程序设计程序设计4.2.1Shell程
11、序的设计与执行程序的设计与执行shell程序的功能是将命令序列组合并由系统自动执行。程序的功能是将命令序列组合并由系统自动执行。用用vi编辑器创建一个简单的编辑器创建一个简单的shell程序,内容如下:程序,内容如下:#!/bin/bashechohellowholsldate以以file.sh文件名存盘。文件名存盘。file.sh文件交给系统执行可用三种方式实现:文件交给系统执行可用三种方式实现:利用输入输出重定向:利用输入输出重定向:$shdatelogiftest-rerrorfilethencaterrorfiledatelogrmerrorfileelseecho“Noerrorth
12、ishour.”datelogfi例例3:#!/bin/sh#例例3根据一天中的不同钟点给出不同的问候消息根据一天中的不同钟点给出不同的问候消息hours=date|cut-c12-13if$hour-lt12thenecho“Goodmorning!”elseif$hour-lt18thenecho“Goodafternoon!”elseecho“Goodevening!”fifi2)case分支:实现多选一控制结构的另一种方法分支:实现多选一控制结构的另一种方法语法:语法:casewordinpattern1)pat1-list1;pattern2)pat2-list2;*)default
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Shell 编程
限制150内