如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第五章shell编程在命令行输入命令时,每次输入一个命令,立即可得到系统的响应。但如果经常要依次执行一组命令,可利用shell程序来实现Shell程序是放在一个文件中的一系列的Linux命令执行shell程序时,由Linux逐条解释和执行程序中的每个命令一、shell程序文件二、shell程序文件的建立例:建立shell程序shex1,其内容为:clearcal109cal209cal309功能:先清屏,再显示09年的1、2、3月份的月历三、shell程序运行的2种方法将shell程序文件视作命令来执行(因此,shell程序文件可以看作是将各种命令组合在一起而形成的新命令),此时必须赋予shell程序文件执行权限$<shell程序文件名>[<参数1><参数2>……]例:①$chmoda+xshex1给程序文件赋予可执行属性②$/home/user1/shex1以完整的路径名键入程序名带参数的运行命令例:建立shell程序shex3,其内容为:clearcal$109cal$209cal$309执行时输入命令的形式为:$shshex3123则执行结果如p.143图5-3所示第一个实参值是1,运行时代换给程序中的形参$1,第二个实参值是2,运行时代换给程序中的形参$2,第三个实参值是3,运行时代换给程序中的形参$3,命令shift作用例:建立shell程序shex2,其内容为:echo$0$1$2shiftecho$0$1$2运行时情况如下:#/root/shex2yesterdaytodaytomorrow/root/shex2yesterdaytoday/root/shex2todaytomorrow#可见:$0始终是当前运行的shell程序命令本身,即/root/shex3四、shell变量变量赋值引用变量释放变量五、shell程序中的控制流条件判断命令test例:判断文件/etc目录下文件profile是否存在test-e/etc/profile当运行shell程序shex时,判断是否带参数test-z$1(-z<字符串>如字符串长度为0,返回真值)判断变量value是否大于等于1并小于3test$value–ge1-a$value-lt3(<表达式1>-a<表达式2>与操作<数值表达式1>-eq<数值表达式2>等于返回真<数值表达式1>-ge<数值表达式2>大于或等于返回真)条件控制流(实例1:p43):如果/etc目录中的文件profile存在,则将其复制到/home中,并分屏显示/home下的profile内容;否则在屏幕上显示信息“profileisnotexist!”iftest-e/etc/profilethencp/etc/profile/homecat/etc/profile|moreelseecho“profileisnotexist!”fi实例3:P44建立程序文件shp3,存放在当前目录下。如果shp3运行时未带参数,则在屏幕上显示信息“Parameterislost!”,并结束程序运行;如果shp3运行时带一个参数,则判断参数所指定的文件是否存在,如果存在则复制该文件到/home;否则先在屏幕上显示信息“Filenotfound!”,然后显示程序本身。判:带参数否?显示不带参数判:参数指定文件存在否?复制该文件到/home显示文件不存在显示程序本身结束程序iftest-z$1-z判$1存在否thenechoParameterislost!如带一参数elseiftest-e$1则$1肯定在thencp$1/homeelseechoFilenotfound!cat$0$0指程序本身fifi(实例6:p48):编写shell程序shp6,存放在当前目录下。运行shp6时带一个正整数参数,将数值存入变量value;如果该参数大于等于1但小于3,则在屏幕上显示“valueislessthan3andnotlessthan1”;如果该参数大于等于3,则在屏幕上显示“valueisnotlessthan3”;最后以“value=xx”的形式显示变量value的值。value=$1iftest$value-ge1-a$value-lt3thenechovalueislessthan3andnotlessthan1fiiftest$value-ge3thenechovalueisnotlessthan3fiechovalue=$value(实例10:p51):编1个shell程序shp10,当以命令“shp10xxyy”执行时,(其中xx为年份