第4章 Shell程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Linux操作系统精讲大连理工大学软件学院邱铁综合楼413,Tel:0411-87571632E_mail:qiutie@dlut.edu.cn参考教材:‡邱铁、于玉龙、徐子川编著《Linux应用与开发典型实例精讲》清华大学出版社.2010.5第4章Shell程序设计学习本章要达到的目标:†1.学会使用Shell编程,能够编写Shell脚本程序;†2.掌握Shell编程中用到的变量、流程控制语句、常用命令、特殊符号;†3.基本学会使用Shell脚本函数。4.1Shell编程简介†Shell提供了一种以脚本文件的方式来实现之,将所有需要执行的命令按照类似于编程的方法写到一个文件中,当需要使用时,只需要运行这个文件即可完成指定的任务†Shell脚本文件的运行同可执行文件的使用方法相同,在命令提示符下输入文件的路径即可运行4.2系统变量4.3条件测试†条件测试可以判断脚本程序运行的状态。它常用于条件分支,以便在不同的运行状态下执行不同的命令。†[param1判断符号param2]†[判断符号param]4.3.1文件状态测试†-bfilename判断文件filename是否为块设备,若文件不存在返回假。†-cfilename判断文件filename是否为字符设备,若文件不存在返回假。†-dpathname判断路径pathname是否为目录,若路径不存在返回假。†-epathname判断路径pathname是否存在。†-ffilename判断文件filename是否为真会文件,若文件不存在返回假。†-gpathname判断路径pathname是否设置了SGID位,若路径不存在返回假。†-hfilename判断文件filename是否为链接文件,若文件不存在返回假。†-kpathname判断路径pathname是否设置了“粘滞”位,若路径不存在返回假。†-pfilename判断文件filename是否为管道文件,若文件不存在返回假。†-rpathname判断路径pathname是否为可读,若路径不存在返回假。†-sfilename判断文件filename的尺寸是否大于0,若文件不存在返回假。†-Sfilename判断文件filename是否是Socket,文件不存在返回假。†-upathname判断路径pathname是否设置了SUID位,若路径不存在返回假。†-wpathname判断路径pathname是否为可写,若路径不存在返回假。†-xpathname判断路径pathname是否为可执行,若路径不存在返回假。†-Opathname判断路径pathname是否为当前用户所拥有,若路径不存在返回假。†-Gpathname判断路径pathname的用户组是否为当前用户所在组,若路径不存在返回假。†file1-ntfile2判断文件file1是否比文件file2新。†file1-otfile2判断文件file1是否比稳健file2旧。4.3.2逻辑操作†param1–aparam2逻辑与。†param1–oparam2逻辑或。†!param逻辑非。4.3.3字符串测试†-zstring判断字符串string是否为空串,即长度为0。†-nstring判断字符串string是否为非空串。†string1=string2判断字符串string1和string2是否相等。†string1!=string2判断字符串string1和string2是否不等。†string1string2按字符编码表排序,字符串string1是否在string2之前。†string1string2按字符编码表排序,字符串string1是否在string2之后。4.3.4数值测试†val1–eqval2判断val1和val2的数值是否相等。†val1–neval2判断val1和val2的数值是否不等。†val1–ltval2判断val1是否小于val2。†val1–leval2判断val1是否小于等于val2。†val1–gtval2判断val1是否大于val2。†val1–geval2判断val1是否大于等于val2。4.4Shell流程控制语句†流程控制包括条件执行、循环、分支执行。4.4.1if语句†if…;then†……†elif…;then†……†else†……†fi4.4.2case语句†casestrin†pattern)dosomething;;†……†esac4.4.3while语句†while…;do†……†Done†until…;do†……†done4.4.4for语句†forvarinstr1str2…;do†……†done4.5Shell编程中的常用命令与符号†4.5.1read命令„命令的语法:†read[参数]变量名„常用的参数如下:†-ttimeout设定超时时间。†-pprompt设定提示信息,该提示信息将会显在光标前。4.5.2select命令†selectvarinstr1str2…;do†break;†done4.5.3花括号†花括号是一种强制的整体标识,可以让一个非整体的字符串强制的解释成一个整体†{catabc.txt†echo“aaa”}4.5.4引号†单引号„可以取消所有的转义符号、通配符和分隔符,†双引号„取消通配符和分隔符的转义,但对于变量依然进行转义4.5.5注释†注释语句所在行的第一个字符必须为“#”,其后是注释的内容。4.6函数†Shell中函数被看成是一个小的脚本程序,仅在当前脚本内部进行调用†funname()†{†……†}4.7应用实例训练†例1.需要完成一个程序,用户输入百分制的分数,之后返回“A”“B”“C”“D”“E”的等级。其中,A等级为90至100分,B等级为80至89分,C等级为70至79分,D等级为60至69分,E等级为0至59分。†needquit=0†while[$needquit-eq0]†do†echoPleaseinputthescore†readscore†case$scorein†100|9[0-9])echoVeryGood;;†8[0-9])echoGood;;†7[0-9])echoMiddle;;†6[0-9])echoPass;;†[1-5][0-9])echoFailure;;†quit|q)echoQuit†needquit=1;;†*)echoWrongInput!;;†esac†echo†done†例2.完成一个文件操作,根据用户指定的目录,删除其中所有文件名以“.c”结尾的文件,若这些文件删除后,目录中没有其他的文件,则将该目录也一并删除。†foriin$*;do†find“$i”–name“*.c”–execrm–r–f{}\;†[“$i/*”=$i/*]&&{†rmdir“$i”†echo“DeleteDirectory$i”†}†done思考与练习†思考Shell编程与Shell命令之间的关系。†阅读资料,了解Shell启动的流程,体会Shell脚本程序在Shell启动过程中的作用。†用Shell编程的形式完成下列程序:1.输出用户通过命令行参数形式提供的多个整数的平均数。具体调用格式如下:„$./avg12345678„Average:452.文件备份。备份用户指定的文件,将文件备份到目录“文件名_backup”中(若目录不存在则自动建立),备份文件的文件名格式为“文件名_bak_年月日_时分秒”。3.将用户提供的二进制数转化为十进制数。(选作)具体的调用格式如下:†$./bin2dec1001†1001(b)=9(d)†$./bin2dec222†222isnotavaluablebinarynumber.

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功