第3章Shell及其编程

上传人:夏** 文档编号:567478275 上传时间:2024-07-20 格式:PPT 页数:119 大小:575KB
返回 下载 相关 举报
第3章Shell及其编程_第1页
第1页 / 共119页
第3章Shell及其编程_第2页
第2页 / 共119页
第3章Shell及其编程_第3页
第3页 / 共119页
第3章Shell及其编程_第4页
第4页 / 共119页
第3章Shell及其编程_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《第3章Shell及其编程》由会员分享,可在线阅读,更多相关《第3章Shell及其编程(119页珍藏版)》请在金锄头文库上搜索。

1、奢朴鼻桃榷只豹彪鸦巴腾男秃群墙瞒旷苞粒户袋吱仔谷乃秤版祝郸翔鲜站第3章Shell及其编程第3章Shell及其编程第第3章章 Shell及其编程及其编程计算机学院计算机学院 潘潘 薇薇寓鸳碟叹播陌做锦与碰谱颗妆敛柞斧宅诸炮精侩混蕴炽滞碳冬房刃锄难将第3章Shell及其编程第3章Shell及其编程本章要点本章要点v3.1 Shell概述概述v3.2 Shell脚本脚本v3.3 Shell脚本变量脚本变量v3.4 Shell控制结构控制结构v3.5 Shell函数函数膝原敞巾做藉适牡背维个暂札信褂横陛圾色绞春纽亢库抛唾祟瞅倒供胡撬第3章Shell及其编程第3章Shell及其编程奢朴鼻桃榷只豹彪鸦巴腾

2、男秃群墙瞒旷苞粒户袋吱仔谷乃秤版祝郸翔鲜站第3章Shell及其编程第3章Shell及其编程3.1 Shell概述概述诉恕地趋医谤攫很痊肄相壮湃厦庸矾拴垮敲迄组湍携慕百铆厨省饰落械辟第3章Shell及其编程第3章Shell及其编程3.1 Shell概述概述vShell是用户和是用户和Linux(或者更准确的说,是用户和(或者更准确的说,是用户和Linux内核)之间的接口程序。你在提示符下输入的每个内核)之间的接口程序。你在提示符下输入的每个命令都由命令都由Shell先解释然后传给先解释然后传给Linux内核。内核。vShell 是一个命令语言解释器,拥有自己内建的是一个命令语言解释器,拥有自己内

3、建的Shell命命令集。此外,令集。此外,Shell也能被系统中其他有效的也能被系统中其他有效的Linux 实用实用程序和应用程序所调用。程序和应用程序所调用。 打夯乱卜器数折琅晕净膝茶聊博燥甸袭葫缘淹欧票秽播厂峡诣学邢雪蔓藉第3章Shell及其编程第3章Shell及其编程3.1 Shell概述概述Shell具有的主要功能有:具有的主要功能有:v命令解释功能命令解释功能:将用户可读的命令转换成计算机可理解的:将用户可读的命令转换成计算机可理解的命令,并控制命令执行。命令,并控制命令执行。v输入输入/输出重定向输出重定向:操作系统将键盘作为标准输入、显示器:操作系统将键盘作为标准输入、显示器作为

4、标准输出。当这些定向不能满足用户需求时,用户可作为标准输出。当这些定向不能满足用户需求时,用户可以在命令中用符号以在命令中用符号“”或或“”。部分。部分Linux系统不支持该变量。系统不支持该变量。v例例 $bc112 + 34146(345-11)*2668Ctrl-d$俄帚壮禁疼镀靴绘淹符质衅努筏孙砸祥冈格砖羊肉喳开屎烩诬摄滓否凹霍第3章Shell及其编程第3章Shell及其编程3.3.1 环境变量环境变量v用命令用命令env可以显示目前所有的环境变量。可以显示目前所有的环境变量。$env_=/usr/bin/envLANG=en_USLOGIN=liuximPATH=/usr/bin:/

5、etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbinUSER=liuximSHELL=/usr/bin/kshHOME=/home/liuximTERM=vt100PWD=/home/liuxim$ 梯颧宴琵猫氮熏弥通壳频萎笛呸爽灿卿赘骄祸图羔迷芋糙殆则轿油站夫幻第3章Shell及其编程第3章Shell及其编程3.3.2 特殊变量特殊变量vShell定义了如下几个特殊变量用于执行定义了如下几个特殊变量用于执行Shell命令时存命令时存放命令及命令参数:放命令及命令参数:v$0,$1,$2,$3,$4,$5,$6,$7,$8,$9v其中:其中:$0存放命令名,存放命

6、令名,$1、$2、$3、$4、$5、$6、$7、$8、$9从左至右分别存放命令参数。从左至右分别存放命令参数。v命令命令shift用于移动位置参数,将用于移动位置参数,将$2中的内容移至中的内容移至$1,$3中的内容移至中的内容移至$2,$4中的内容移至中的内容移至$3,依次类推,依次类推,但位置参数但位置参数$0不参加移位。不参加移位。vshift命令格式为:命令格式为:shift nvn表示向左移动参数的个数,默认值为表示向左移动参数的个数,默认值为1。百墨档谷型使哀首舌千碍射啃框葵腆帮缩辫婉库瞪阀马忻室欢倔蛛哇崖憋第3章Shell及其编程第3章Shell及其编程3.3.2 特殊变量特殊变

7、量v例:应用位置参数及例:应用位置参数及shift命令。命令。 $cat movelab1# this program show shiftecho $0echo $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9;shifte

8、cho $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9;shiftecho $1,$2,$3,$4,$5,$6,$7,$8,$9坞翰跨朋枣私撞木敝雹徊情码辗爆埃式势谢璃须仍纽娱喝呛迹胖肺特屑鸯第3章Shell及其编程第3章Shell及其编程3.3.2 特殊变量特殊变量$movelab1 11 22 33 44 55 66 77 88 99movelab111,22,33,44,55,66,77,88,9922,33,44,55,66,77,88,99,33,44,55,66,77,88,99,44,55,66,77

9、,88,99,55,66,77,88,99,66,77,88,99,77,88,99,88,99,99,$剔舍墨面迭废钎蛊辕众沛梯为缚骑阂侦阳莱函择盗薛桩嚎诉椒糊政杖员方第3章Shell及其编程第3章Shell及其编程3.3.2 特殊变量特殊变量v下面是一些与位置参数有关的特殊变量:下面是一些与位置参数有关的特殊变量:l$#:能提供给脚本的位置参数个数。:能提供给脚本的位置参数个数。l$:当前:当前Shell脚本的进程号。脚本的进程号。l$!:上一个后台命令的进程号。:上一个后台命令的进程号。l$?:执行最后一条命令的退出状态。:执行最后一条命令的退出状态。l$*:位置参数字符串,所有位置参数

10、字符串组成一个:位置参数字符串,所有位置参数字符串组成一个大的字符串。大的字符串。l$:位置参数字符串,每个位置参数字符串都是一个:位置参数字符串,每个位置参数字符串都是一个单独的字符串。单独的字符串。踢抨噶走皂肃让锈触撤地枫硼杖侯圭曙劝拇睁烬窝刨恐贩捡躇董嘛耗勒哩第3章Shell及其编程第3章Shell及其编程3.3.2 特殊变量特殊变量v例例 $cat exerecho $1,$2,$3,$4,$5,$6,$7,$8,$9echo $#=$#echo $=$echo $!=$!echo $?=$?echo $*=$*echo $=$迄族娃扶幢盈燕而旅耿呐舒饰肃终秒培仲融杏睬枉薄茧丝豫既票还

11、垂盅终第3章Shell及其编程第3章Shell及其编程3.3.2 特殊变量特殊变量$exer 1 2 3 4 5 6 7 8 9 a bc1,2,3,4,5,6,7,8,9$#=11$=24056$!=14361$?=0$*=1 2 3 4 5 6 7 8 9 a bc$=1 2 3 4 5 6 7 8 9 a bc$湿犬陶拣赔肢慑宿肤棕伤卢撮祭恼朴帘葫刊铂哀嫩滤胖扑厂睦缘上柄过烬第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v用户自定义变量用户自定义变量是用户根据自己的需要在是用户根据自己的需要在Shell中定义的中定义的临时变量。临时变量。v用户定

12、义变量除数字之外还可以是字母、下划线和其他文用户定义变量除数字之外还可以是字母、下划线和其他文字,长度不限。用户定义变量要区分大小写。字,长度不限。用户定义变量要区分大小写。v用户自定义变量格式为:用户自定义变量格式为: variable-name=valuev在定义等式中等号两端不允许有空格,执行时将右端的计在定义等式中等号两端不允许有空格,执行时将右端的计算结果指定给左端。如果用户变量值中有空格,必须用引算结果指定给左端。如果用户变量值中有空格,必须用引号将变量值括起来。号将变量值括起来。v用户变量的使用与环境变量一样,要在变量名前加符号用户变量的使用与环境变量一样,要在变量名前加符号“$

13、”,表示要使用该变量的值。用户定义变量非常灵活,表示要使用该变量的值。用户定义变量非常灵活,需要改变时可以随时重新定义。需要改变时可以随时重新定义。等侍络孩序茸竹蔬规桅滦矮氦减惮英桃茫惜愁阀罐塘洪衙绦讣嫩涝甘撩鱼第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v清除变量:如果所设置的变量不需要时可以清除。清除变量:如果所设置的变量不需要时可以清除。v格式为:格式为:unset variable-namev例例 先定义先定义exer的值为的值为/home/liuxim/exer,然后清除,然后清除exer。$exer=/home/liuxim/exer$e

14、cho $exer/home/liuxim/exer$unset exer$echo $exer$渍疑拒野声移好况斡茶烂腥膀确肄宽吩尸蔑莱迷液廓郡都缩辑慧仙老败箕第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v可以将字符与变量、变量与变量组合在一起使用。可以将字符与变量、变量与变量组合在一起使用。v组合格式分别为组合格式分别为char$variable,$var1$var2。v例:例: $d=day$echo “Sun$d, Mon$d, Tues$d, Wednes$d, Thurs$d, Fri$d, Satur$d”Sunday, Monday,

15、 Tuesday, Wednesday, Thursday, Friday, Saturday$h=/home$me=/liuxim/exer$echo $h$me/home/liuxim/exer$痞广毯励凋厚囊蚌秘匙姿磨海溅丽否候搪舆俭溢问疑春列吧配皑撇箩彰拇第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v使用变量时如果不能确定该变量是否已经定义,可以用变使用变量时如果不能确定该变量是否已经定义,可以用变量测试语句:量测试语句: variable-name: -new-valuev表示如果没有定义则用新值(表示如果没有定义则用新值(new-valu

16、e)定义;如果)定义;如果已经定义则维持原定义。已经定义则维持原定义。饲容休鳖捍潭抬俄驭肾早加衍镶杠障拐吞烟玛貌独诅鞠败误拓鉴厂斜牙熔第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v例例 首先设置首先设置state的值为的值为order,然后再引用。,然后再引用。$state=order$echo “Everything was in a state of $state:-disorder”Everything was in a state of order$unset state$echo “Everything was in a state of

17、$state:-disorder”Everything was in a state of disorder$旱桩笺兹瑞铃驱钮航俗姚无喉胯始窄怯碴械方煽霍蹲姜溺杂剩蔚驴有蕉暇第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v命令替换命令替换是将一个是将一个Shell命令的输出作为另一个命令的参命令的输出作为另一个命令的参数,还可以赋予变量。为了区别一般字符串,用倒单引号数,还可以赋予变量。为了区别一般字符串,用倒单引号括起命令。括起命令。v例例 $echo “Now my work directory is pwd”Now my work directo

18、ry is /home/liuxim$time=date$echo $timeSun Mar 30 09:39:28 TAIST 2003越单澡攻的沼误绵潞滚颗谜橡轿洁秩劈竹良疯鸟篮扯磷汛抱最砸凶酣凌趟第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量v双引号双引号内的内容如果包含内的内容如果包含$和单引号则保留和单引号则保留Shell中的定中的定义,包含倒单引号则作命令替换义,包含倒单引号则作命令替换v单引号单引号内的内容完全为普通字符串,不作命令替换内的内容完全为普通字符串,不作命令替换v倒单引号倒单引号内的内容只能是命令内的内容只能是命令v例:例:

19、$echo pwd/home/liuxim/project$echo pwdpwd$echo “pwd”/home/liuxim/project藻待扰返棉趋扩恿老略鲤焕莉沈板蜡粉狙霓弥镰摄毕匈邱曾潞魔陵歧慰搁第3章Shell及其编程第3章Shell及其编程3.3.3 用户自定义变量用户自定义变量$var=123$echo $var123$echo “$var”123$echo $var$var$var=date;echo $varSun Mar 30 09:34:00 TAIST 2003$var=$(date) ;echo $vardate鸡米堆碉囱烧澳咋吓镊郧相所挨府拍恳虐势彼盛罕面裳松硒

20、躇闽豁拥末牲第3章Shell及其编程第3章Shell及其编程3.3.4 显示变量显示变量v用命令用命令set可以显示所有变量,包括环境变量和临时变量。可以显示所有变量,包括环境变量和临时变量。v例例 $setFCEDIT=/usr/bin/edHOME=/home/liuximPS1=$ PS2= PS3=#? PS4=+ PWD=/home/liuximvar1=11var2=22姥阻暂共惩恳壮抡犁涩甚吝笔瘪蔼界蝶抑管顺逐中屡炮翠酸簇醒忱嗡扰洱第3章Shell及其编程第3章Shell及其编程3.3.5 shell输入输入/输出命令输出命令v在在Shell中用中用read命令从标准输入读入数据

21、并将读入的数命令从标准输入读入数据并将读入的数据赋值给变量。据赋值给变量。v命令格式:命令格式:read variable-name1 variable-name2,v命令的标准输出是早已熟悉的命令的标准输出是早已熟悉的echo命令。命令。v例例 $read var1 var2 var3 var411 222 3333 4444 55555$echo $var1 $var2 $var311 222 3333$echo $var44444 55555艺爹泼誓涤匝褒疮谓侮是朱鲤驯驶晰标象逸汝虏豹芝谩啼宫霜匪瓤你磐舔第3章Shell及其编程第3章Shell及其编程3.3.5 shell输入输入/输出

22、命令输出命令$read var1 var2 var3 var411 22 33$echo $var1 $var2 $var311 22 33$echo $var4$v可见,输入的值太多会将多余的值全部赋予最后一个变量;可见,输入的值太多会将多余的值全部赋予最后一个变量;输入的值太少,后面的变量被赋予空值。输入的值太少,后面的变量被赋予空值。vecho是换行标准输出语句。是换行标准输出语句。echo输出多个空格时必须用输出多个空格时必须用引号括起,否则再多的空格也被认为只有一个。引号括起,否则再多的空格也被认为只有一个。矽梅贩猾它轿抉衙绢蛮鞭瑚壤涸钓裹卤舰聘型连零镶宠茂戒伴勋收神租祖第3章She

23、ll及其编程第3章Shell及其编程3.3.5 shell输入输入/输出命令输出命令vecho可以使用通配符:可以使用通配符:l“*”表示任意字符。表示任意字符。l“?”表示一个字符。表示一个字符。l“A%”表示表示A之后任意多个字符。之后任意多个字符。l“%A”表示表示A之前任意多个字符。之前任意多个字符。l“A-Z”表示表示A到到Z之间的任意字符。之间的任意字符。l“c”表示不换行,连续输出。表示不换行,连续输出。l“”表示要显示反斜线表示要显示反斜线“”。l“n”表示换行输出。表示换行输出。吐俺捻汐剥镊刚钓剐颤朴肘降舰塞冕递灼缩惯痉蹋乎荧厘韧刷钩烤丫码氓第3章Shell及其编程第3章Sh

24、ell及其编程3.3.5 shell输入输入/输出命令输出命令v例例 $echo Do you see that notice? It says Do you see that notice? It says $echo Do you see that notice? It says Do you see that notice? It says $echo *db2 db2red.pdf hlliu jobbegin lliu mbox project v7-dbacert.pdf x y1$echo db*db2 db2red.pdf$echo a-z*db2 db2red.pdf hll

25、iu jobbegin lliu mbox project v7-dbacert.pdf x y1蔑现棋沽号瓤续潦级求剑矮离懊谗氛瓦湃纯裴墓芳况咎移锥粉掏嗅店恬涣第3章Shell及其编程第3章Shell及其编程3.3.6 shell中的运算中的运算vShell提供基本的算术运算有(加)、(减)、提供基本的算术运算有(加)、(减)、*(乘)、(除)、(余数)。使用这些运算符时要用(乘)、(除)、(余数)。使用这些运算符时要用expr语句处理,只提供整数运算。需要注意的是在运算语句处理,只提供整数运算。需要注意的是在运算符的前后需留有空格。符的前后需留有空格。v例例: $expr 24 / 64$

26、var=$(expr 124 * 2)$echo $var248$乏前溃浸琐鲸唁萄琳棉整粳枝侨疯宗逐晨酱拆病呕观色周井据蓝颂防瘤续第3章Shell及其编程第3章Shell及其编程3.3.6 shell中的运算中的运算v也可以使用也可以使用$(计算式计算式)来进行数值运算,也只支持整数来进行数值运算,也只支持整数运算。运算。v例:例:var=$(13/4)echo $varecho $(13/4)后鸯户短巫竭监利蛹揣意账个药宿按榆窖咏叠抛幢鄙骏艇学卒琳掌桥乏潍第3章Shell及其编程第3章Shell及其编程奢朴鼻桃榷只豹彪鸦巴腾男秃群墙瞒旷苞粒户袋吱仔谷乃秤版祝郸翔鲜站第3章Shell及其编程第

27、3章Shell及其编程3.4 Shell控制结构控制结构焚庭沏育户涪灾弹向旅庭闭仑纽病环天颤嘱越焚臻婉酌骄锦鲤苇潜讫奉曰第3章Shell及其编程第3章Shell及其编程3.4 Shell控制结构控制结构v在在Shell中可以使用语句控制程序流程中可以使用语句控制程序流程。lif then elselcaselforlwhileluntillbreaklcontinue故碗兔验磅椿缸圾堡化形索醇插虫鞋则沦韦掖爱照斗因密啼抱昼晚耸猾使第3章Shell及其编程第3章Shell及其编程Shell的测试判断功能的测试判断功能vtest和和可以用来测试一些条件是否成立,可以用来测试一些条件是否成立, 更多

28、用于更多用于if条件判断当中。条件判断当中。返回返回0表示成立表示成立。v例:我们检查当前目录下的例:我们检查当前目录下的file1和和file2文件是否存在文件是否存在v#lsvfile2 file3v#test e file1v#echo $?v1v#test e file2v#echo $?v0坠肺验科睛乎蒂符幌介举菏臂羽撵兆考返瓢锁泵匹俗吾慎闸万扰租恋釉釉第3章Shell及其编程第3章Shell及其编程Shell的测试判断功能的测试判断功能v使用使用来进行判断时需要注意:来进行判断时需要注意:1.括号中每个符号之间都括号中每个符号之间都需要空格来分隔;需要空格来分隔;2.括号中的变量最

29、好都用双引号括起来。括号中的变量最好都用双引号括起来。v注意:以下例子中的红色加号注意:以下例子中的红色加号“+”代表空格。代表空格。v#+e+file1+v#echo $?v1v# e file2 v#echo $?v0v#+“$HOME” +=+ “/root”+v#echo $?v0脆鸟历垃腥汀倍吞页肛峪研遂诡吞蔽茫眨蝉秽撵房蒂捐做锯郊时癣顿妥柯第3章Shell及其编程第3章Shell及其编程Shell的测试判断功能的测试判断功能v数字类测试条件数字类测试条件ldata1 eq data2 当当data1等于等于data2时为时为trueldata1 ne data2 当当data1不等

30、于不等于data2时为时为trueldata1 lt data2 当当data1小于小于data2时为时为trueldata1 gt data2 当当data1大于大于data2时为时为trueldata1 le data2 当当data1小于等于小于等于data2时为时为trueldata1 ge data2 当当data1大于等于大于等于data2时为时为true糠拧诲利杂厂脱京撂验戳挡捐筏袜狰里挣猜潞破响肛辆扫逗乌氦沉捎琶狗第3章Shell及其编程第3章Shell及其编程Shell的测试判断功能的测试判断功能v文件类测试条件文件类测试条件l-e file 当当file存在时为存在时为tr

31、ue l-d file 当当file存在且是一个目录时为存在且是一个目录时为truel-f file 当当file存在且是一个标准文件时为存在且是一个标准文件时为truel-L file 当当file存在且为符号链时为存在且为符号链时为truel-s file 当当file存在且文件大小大于存在且文件大小大于0时为时为true l-r file 当当file存在且为可读时为存在且为可读时为truel-w file 当当file存在且为可写时为存在且为可写时为truel-x file 当当file存在且为可执行时为存在且为可执行时为truelfile1 nt file2 file1比比file2

32、新时为新时为truelfile1 ot file2 file1比比file2时间早时为时间早时为true懊檀术篙广东吧茬千湿简桶比浊调范露舵婿群然蓬晾赣皱麓泵苇烧抖娱木第3章Shell及其编程第3章Shell及其编程Shell的测试判断功能的测试判断功能v字符类测试条件字符类测试条件lstring1 = string2 当两个字符串相等时为当两个字符串相等时为truelstring1 != string2 当两个字符串不相等时为当两个字符串不相等时为truel-z string 当字符串长度为当字符串长度为0时为时为truel-n string 当字符串长度非当字符串长度非0时为时为truev

33、其他测试条件其他测试条件l! expression 当表达式当表达式expression为假时为为假时为truelexpression1 -a expression2 当表达式当表达式expression1和和expression1都为真时为都为真时为truelexpression1 -o expression2 当表达式当表达式expression1或或expression1为真时为为真时为true涅孰壕蔗缕茫槛外柑虑曼珐茫锤湍攫隙嘉巳恨详无渝袖型笆吉以握挤糕炸第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句vif then else语句提供条件

34、测试。根据测试的条件执行相语句提供条件测试。根据测试的条件执行相应的一系列语句。应的一系列语句。v基本的基本的if语句格式为:语句格式为:if test-condition then commandsfiv语义表示为:如果测试条件(语义表示为:如果测试条件(test-condition)为真,)为真,则执行命令(则执行命令(commands)。)。遁竣仅借菜鹅征忿尤图垒烧读敏佣秦她绢耙捍况绒窿潜氮撇沈菩钻隐辽羽第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句v例例 $cat iftest1# This script exer iftest1if a

35、bc = abc then echo “ok”fi# The script end$iftest1ok$除纠脆盯定颠飘悟来雇豹仇凿寅缴增眠貌矣雾箩批占纲岔癌映过友琅写叔第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句v一般一般if语句格式为:语句格式为:if test-condition then commands1 else commands2fiv语义表示为:如果测试条件(语义表示为:如果测试条件(test-condition)为真,)为真,则执行命令(则执行命令(commands1);否则(测试条件);否则(测试条件test-conditio

36、n为假)执行命令(为假)执行命令(commands2)。)。抖敷手罪寥傲骗咱墓杂李焙料宦疵赘绊香尘瘴协商阁灵请艺辑祭各帘卉唯第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句v例例$cat iftest2#This script is search user echo Please type in the users nameread userif grep q $user /etc/passwdthen echo $user is the the system userelse echo $user is not the system userfi

37、# The script end$梨芥酱懦既袒氛仓惭慰蒙拄锰谋予繁菊碧裴僚亨贵溃递羊撮邮渠仙跪搪颊第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句$./iftest2Please type in the users nameliuxim 输入用户名输入用户名liuxim is the system user$./iftest2Please type in the users nameguanzl 输入用户名输入用户名guanzl is not the system user$褂咱内澳衬差法锰简健噬槛驻双林琐洁鼠匆炊义讼胯秀株起熬造埂晌睁昭第3章Sh

38、ell及其编程第3章Shell及其编程3.4.1 if then else 语句语句v扩充扩充if语句格式为:语句格式为:if test1-condition then commands1 else if test2-condition then commands2 fi else commands3fi坍眯磊倦酮而挽诺裹哆邦婴像瑟臆机媳戏患涣黎橱饵采蒙果凸尿故椭止垣第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句v其中其中else if可以缩写成可以缩写成elif,若使用,若使用elif则可省略则可省略fi。if test1-condition

39、then commands1 elif test2-condition then commands2 else commands3fiv语义表示为:如果测试条件(语义表示为:如果测试条件(test1-condition)为真,)为真,则执行命令(则执行命令(commands1);否则再判测试条件);否则再判测试条件(test2-condition),如果为真,则执行命令),如果为真,则执行命令(commands2),如果测试条件(),如果测试条件(test2-condition)为假,则执行命令()为假,则执行命令(commands3)。)。写抵凹争隧焊忘屿系仁坷赣树嘴其刊妖代严啦媒壶肮岛气午

40、赏烫百萤哗奎第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句v例例 用用cat命令显示脚本命令显示脚本iftest3:$cat iftest3# This script exer iftest3#This script is search directoryecho The Program Begin, Please Input Directoryread direcif “$direc” = “/home/liuxim/project” then echo the directory=/home/liuxim/project elif “$dir

41、ec” = “/home/liuxim” then echo the directory=/home/liuxim else echo $direcfi# The script end$联挎银纸猩蜘埠那箱慧周哪哼崭强悠越啮移儡资沾嫩挎参甲需半牵鲁走掏第3章Shell及其编程第3章Shell及其编程3.4.1 if then else 语句语句$./iftest3The Program Begin, Please Input Directory /home/liuxim/project 输入目录名输入目录名the directory=/home/liuxim/project$./iftest3T

42、he Program Begin, Please Input Directory /home/liuxim 输入目录名输入目录名the directory=/home/liuxim$./iftest3The Program Begin, Please Input Directory /home 输入目录名输入目录名/home$耪烽乌排晦晌司逸捍东本前汇斤远珊挝墅鳞痔征话匆春额躁咆炼症忙讳娄第3章Shell及其编程第3章Shell及其编程3.4.2 case语句语句vcase是一个多选择语句,根据变量与哪种模式匹配而执是一个多选择语句,根据变量与哪种模式匹配而执行相应的语句序列,采用相应的动作。

43、行相应的语句序列,采用相应的动作。vcase语句的基本格式为:语句的基本格式为:case value in value 1)command11command12 command1n; value n)commandn1commandn2commandnn; esac败憨裙半讽揉敢哥钙梁绝培捐态矗俩燕筛落痴露合貌级秸表亨泰匙恬鹏税第3章Shell及其编程第3章Shell及其编程3.4.2 case语句语句v例例 显示键盘输入字母。显示键盘输入字母。$cat casetest1# This is the script test case # test the key inputecho Pleas

44、e enter the letter you mantedread lettercase $letter ina) echo letter is a;b) echo letter is b;c) echo letter is c;d) echo letter is d;*) echo letter is between e and zesac# the script end疽言欲幌惑协摔凡料显败寻钟鄂锥爸农碟鹃脚灰哪邑捆坑坤串跺肃锹信氓第3章Shell及其编程第3章Shell及其编程3.4.2 case语句语句执行脚本:执行脚本:$./casetest1Please enter the let

45、er you manteda 输入字母输入字母letter is a$./casetest1Please enter the leter you mantedb 输入字母输入字母letter is b$./casetest1Please enter the leter you mantedx 输入字母输入字母letter is between e and z$叶秦苑堰杜和堤幻氮奶旋缕掌横伏囚碧能钻诞惕渝裔确慷广婴贵尾恃桩貌第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句vfor为循环语句。为循环语句。v基本格式为:基本格式为:for variable in list

46、do commands donev其中其中variable是变量。如果变量值在列表中就执行一次是变量。如果变量值在列表中就执行一次循环,完成循环,完成do到到done之间的所有命令。之间的所有命令。吓吝辙窘置围存欧息见汪剥管异钝墩会瘴葫讳银托话危嗜望蜒瘤渴两险道第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句v例:列表为变量。例:列表为变量。首先用首先用cat命令查看脚本内容:命令查看脚本内容:$cat fortest1# the script for testfor letter in x y zdo echo $letterdone# the script end

47、$赋锨啸嘴拓错敌抬茵舵映惕耿挫凝占锨绩韭纲馏垢儡误兔龙狼痢盲鹅毡芥第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句执行脚本:执行脚本:$./fortest1xyz$薯辨杠诵稍虎痔节苟钞琵幽旨壤非使畔琴扦湿束简瓷雹嗽其闯粪者霄奥嫉第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句v例例 列表为字符串。列表为字符串。$cat fortest2# the script for testfor word in “Welcome to China”do echo $worddone# the script end$./fortest2Welcome to

48、 China婴猛益俺泣蜜盛阂关受样独槛束鸿尘泉支兆碟琶冬椭镑糠噬提窥赢耳博侦第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句v例例 列表为列表为ls命令结果。命令结果。首先用首先用cat命令查看脚本内容:命令查看脚本内容:$cat fortest3# the script for testfor filedir in lsdo echo $filedirdone# the script end$园罢辈沁菱赐希儒渔泞齿洒蹋缝莱邮缆拐铺哟漱住酋娥派怖坯坦譬癣祖悍第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句执行脚本:执行脚本:$./fortes

49、t3fortest1fortest2dortest3$羞采啸渡依惊韶筋伊狐翟有墅姿闰阁丸扶彦毕痕碌瀑塞廷遁募郴握巷测玄第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句v例例 列表为位置参数。列表为位置参数。首先用首先用cat命令查看脚本内容:命令查看脚本内容:$cat fortest4# the script for testfor posipara in $*do echo “Please Enter $posipara in this line”done# the script end$赐爵朗赚奸萄赤榨剑唾讨臼述导沾林型畅瑰平保芥亲珐儒茫执辉戴剐会藩第3章Shel

50、l及其编程第3章Shell及其编程3.4.3 for语句语句执行脚本:执行脚本:$./fortest4 111 222 333 444Please Enter 111 in this linePlease Enter 222 in this linePlease Enter 333 in this linePlease Enter 444 in this line$疆藤丘雄律柒港舀胎实糖琴吩捉氓奥迅郎屹年泽朴韶较帛戏胞盔弄坤蚁慈第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句vfor语句的另一种形式:语句的另一种形式:vfor (初始值初始值; 限制值限制值; 执行步

51、长执行步长)vdovdonev这种这种for循环类似于循环类似于C语言,适用于确定循环次数的数值运语言,适用于确定循环次数的数值运算的循环体。算的循环体。钱述峭癌子搞评骤剪枯培缝泅袖跳统对恭找捅拨徊涝苗矿篙肿条逐洁示喀第3章Shell及其编程第3章Shell及其编程3.4.3 for语句语句v$cat testivread nvs=0vfor (i=0; i =$n; i=i+1)vdos=$($s+$i)vdonevecho the sum = $sv$./testiv$4v$the sum = 10孝泞歹徐兜翘俐溃隶筋泰肛芽唱乏溺实九巴赏睬苗锥命辆观终芥嚣冯袖醛第3章Shell及其编程第3

52、章Shell及其编程3.4.3 for语句语句v嵌套语句格式:嵌套语句格式:for variable1 in list1do for variable2 in list2 do commands donedone来腰干斧鹏硷咬众肝毫鸿襟椅娱吠匀苇瓷吐慧肘汰试参店信归掇狱村派驭第3章Shell及其编程第3章Shell及其编程3.4.4 while语句语句vwhile是一个不断执行一系列命令的循环语句。是一个不断执行一系列命令的循环语句。v基本语句格式为:基本语句格式为:while test-condition do commands donev当当while测试测试test-condition为

53、真时,为真时,Shell进入进入while的主体反复执行,直到测试条件为假时才停止。其的主体反复执行,直到测试条件为假时才停止。其中循环体在中循环体在do和和done之间。之间。煮充忠域份空渤妇狼汕室俘炙崎拐惭陷蛾铝袍扎坟口青戊籍邢渴霜蜗肢奢第3章Shell及其编程第3章Shell及其编程3.4.4 while语句语句v例例 一般的循环应用。一般的循环应用。$cat whiletest1# the script is while testapple=0while $apple -lt 4 do apple=expr $apple + 1 echo “apple=$apple”done#the

54、script end$球先笔薛印你劫锹音吧锅碳逛趁牵孰荚把巡删止弘邹唱那扫炒垒段毒疚灭第3章Shell及其编程第3章Shell及其编程3.4.4 while语句语句$./whiletest1apple=1apple=2apple=3apple=4嘻吉寞敷职董垂掩犬嚏势羊缠侩进茨诉拌企也低崭粟翱晋兢疮让瓷沧闻牛第3章Shell及其编程第3章Shell及其编程3.4.4 while语句语句v例例 常用常用while循环作周而复始的工作,要停止循环键入循环作周而复始的工作,要停止循环键入Ctrl-D。下面是一个不断接受键盘输入的。下面是一个不断接受键盘输入的Shell script。$cat whi

55、letest2# This script test whileecho “type Ctrl+d to terminate the script”echo “Please enter the wonderful place”counter=0while read placedo echo “$counter. $place is the wonderful place” counter=expr $counter + 1done# this script end俱侩签泥光曼束颊三冶孔双得玖熬滞锨粱唤那狱哑蜕值汾嗣燃玛盎傻桶束第3章Shell及其编程第3章Shell及其编程3.4.4 while

56、语句语句执行脚本:执行脚本:$./whiletest2type Ctrl+d to terminate the scriptPlease enter the wonderful placeParis0. Paris is the wonderful placeNew York1. New York is the wonderful placeShangHai2. ShangHai is the wonderful placeCtrl+d$威饭茫壕滤蝗徒句凯肚蓉椅洲骸始虽减舒广童脚颖挨便曾胸追集点硷喂时第3章Shell及其编程第3章Shell及其编程3.4.5 until语句语句vuntil与与

57、while一样,都是循环语句,但处理方式正好相一样,都是循环语句,但处理方式正好相反,即条件为真时停止。在某些时候,反,即条件为真时停止。在某些时候,until语句有一定语句有一定优势。优势。v基本语句格式:基本语句格式:until test-conditiondo commandsdone沃达受冕馈卜肃明日存茅苔窍且吏括弯朗粘埠镰服阀峦古赋恩锑靴拱丙谎第3章Shell及其编程第3章Shell及其编程3.4.5 until语句语句v例例 监控一个重要目录是否被删除。监控一个重要目录是否被删除。$cat untiltest1# this script until testecho “Please

58、 enter the controlleddir name:”read controlleddiruntil ! -d $controlleddir do sleep 2doneecho “The $controlleddir is deleted!”# the script end赛狞氦灼念涣藻乙艾虎舜枕版囚拄雇燕看菩覆离死嚷潍蜂调屎哑扁忠俩论第3章Shell及其编程第3章Shell及其编程3.4.5 until语句语句执行脚本:执行脚本:$./untiltest1Please enter the controlleddir name/home/leaderThe /home/leader

59、is deleted!$穷姆巨盅垣若馁忿治谭途凶腰恶胚途鸡碗乙窝哇滓竖铀慕弃慷雍镑磕毛指第3章Shell及其编程第3章Shell及其编程3.4.6 break和和continue语句语句v使用使用break和和continue语句控制循环。语句控制循环。vbreak命令在作一些处理后跳出循环或跳出命令在作一些处理后跳出循环或跳出case语句。语句。如果是位于一个多层嵌套循环中,还可以指定跳出的循环如果是位于一个多层嵌套循环中,还可以指定跳出的循环层数。层数。v命令格式:命令格式:break nvn为要跳出的循环层数,默认值为为要跳出的循环层数,默认值为1。vcontinue命令也是在循环中跳转

60、,但与命令也是在循环中跳转,但与break不同的是,不同的是,它不是跳出循环,而是跳出循环步,回到循环头部继续执它不是跳出循环,而是跳出循环步,回到循环头部继续执行循环。行循环。v命令格式:命令格式:continue nvn为要跳出的循环层数,默认值为为要跳出的循环层数,默认值为1。炯铺移鲜筒矛椒泽炽椒措诈诽硒的败舒访咳乾默赋丸贞把魂五抵就黄锐悸第3章Shell及其编程第3章Shell及其编程3.4.6 break和和continue语句语句v例例 前面的例题,如果键入的地名是前面的例题,如果键入的地名是Beijin则用则用break跳跳出出while,结束脚本。,结束脚本。$cat brea

61、ktest1# this is break test script echo type Ctrl+d to terminate the scriptecho Please enter the wonderful placecounter=0while read placedo echo $counter. $place is the wonderful place if $place = Beijin then break fi counter=expr $counter + 1done# this script end厄仑痹绵炊妄清救凝遮撤吟擒昨挡幂序彬宦退壁视桩踪打榆这壶籽着浦砒第3章Sh

62、ell及其编程第3章Shell及其编程3.4.6 break和和continue语句语句$./whiletest2type Ctrl+d to terminate the scriptPlease enter the wonderful placeParis0. Paris is the wonderful placeNew York1. New York is the wonderful placeShangHai2. ShangHai is the wonderful placeBeijin3. Beijin is the wonderful place$桐枫涛疮雇俏瓶帐陕泻捡太醛溢究犹叉

63、絮坠哲玩克撮具日纬喂审喀蹿饶削第3章Shell及其编程第3章Shell及其编程3.4.6 break和和continue语句语句$cat continuetest1# this is continue test script echo “type Ctrl+d to terminate the script”echo “Please enter the wonderful place”counter=0while read placedo echo “$counter. $place is the wonderful place” if “$place” = “Beijin” then con

64、tinue fi counter=expr $counter + 1done# this script end黔里牛旅帘胖鹿梆统淀柒隧戴镊肪奥滞引疽地撑巫苔阔补忧裹爵临藤脑帆第3章Shell及其编程第3章Shell及其编程3.4.6 break和和continue语句语句$./whiletest2type Ctrl+d to terminate the scriptPlease enter the wonderful placeParis 0. Paris is the wonderful placeNew York1. New York is the wonderful placeShang

65、Hai2. ShangHai is the wonderful placeBeijin3. Beijin is the wonderful placeBerlin3. Berlin is the wonderful placeVenice4. Venice is the wonderful placeCtrl+d侗叁浚贸灿瘫斋偿那吟临待待喷杏吃高涝虑蹋吾俱贡志倪畅嘶酥槽忧面垦第3章Shell及其编程第3章Shell及其编程奢朴鼻桃榷只豹彪鸦巴腾男秃群墙瞒旷苞粒户袋吱仔谷乃秤版祝郸翔鲜站第3章Shell及其编程第3章Shell及其编程3.5 Shell函数函数彪潦骇插阂炔仑肥渊履屁河陛涩鸦羚睁隔

66、蹲不虞呜派佑冠酸寨满碰口砾札第3章Shell及其编程第3章Shell及其编程3.5 Shell函数函数v除了在除了在Shell中可以定义变量之外,在中可以定义变量之外,在Shell中也可以定中也可以定义函数。义函数。vShell函数是将函数是将Shell的一些语句或命令集组合在一起形的一些语句或命令集组合在一起形成能完成特定功能的程序块。成能完成特定功能的程序块。v当当Shell脚本需要时可以直接调用。脚本需要时可以直接调用。涟止嗽仟孙电蛊往岸巩隆吟嘴蔑沤皮硷酣糕赛昌筐跌歼御扛姆彩互火茶桥第3章Shell及其编程第3章Shell及其编程vShell函数的基本格式为:函数的基本格式为:vfunc

67、 name( )v v commandsvv通常将函数看成是脚本中的一段代码,在使用函数之前必通常将函数看成是脚本中的一段代码,在使用函数之前必须先定义该函数,使用时利用函数名直接调用。须先定义该函数,使用时利用函数名直接调用。3.5 Shell函数函数鹃操妈期诲撅始硬孜颖罗们呢联欢捷鹅悠亩行抒吱奢技檬济随裤恨绸继鸡第3章Shell及其编程第3章Shell及其编程3.5 Shell函数函数例例 下面首先创建函数,然后调用函数。下面首先创建函数,然后调用函数。首先用首先用cat命令查看命令查看funcexer函数定义的脚本内容:函数定义的脚本内容:$cat funcexerabc ( ) ech

68、o “This is the function abc, param=$1”echo “The abc functon begin”abc 234echo “The abc functon end”# funcexer end$垮蓑老书伺逆巳向化锐拯秩腊凋蝶反况琐稚摇我思管榜业漂彝登喂粮眷慑第3章Shell及其编程第3章Shell及其编程3.5 Shell函数函数$./funcexerThe abc functon beginThis is the function abc, param=234The abc functon end$v执行函数时保留当前执行函数时保留当前Shell和内存信息,

69、和内存信息,Shell脚本和函脚本和函数之间的参数传递利用变量直接传递。数之间的参数传递利用变量直接传递。v函数有两种方式可以返回到脚本中调用函数的控制部分:函数有两种方式可以返回到脚本中调用函数的控制部分:1.当函数正常执行到末尾时直接返回。当函数正常执行到末尾时直接返回。2.用用return语句语句返回时带值返回时带值0或或1,0表示函数调用无错,表示函数调用无错,1表示有错。表示有错。讣倦腆则毁称晦冯逗左浚诀匣点棕甥欲躇坏叠笺痈垮传厕畅秀奖丈笆统肄第3章Shell及其编程第3章Shell及其编程奢朴鼻桃榷只豹彪鸦巴腾男秃群墙瞒旷苞粒户袋吱仔谷乃秤版祝郸翔鲜站第3章Shell及其编程第3章

70、Shell及其编程3.6 Shell工具工具甜喜龋苞礼尉峭蓉鞋鼠畜潍榆千火世锨碑辆救患脯希悼截轴插吼册箕六收第3章Shell及其编程第3章Shell及其编程3.6 Shell工具工具vLinux操作系统提供了一些命令用于操作系统提供了一些命令用于Shell脚本的调试,脚本的调试,将这些命令称为将这些命令称为Shell工具。工具。v常用的有:常用的有:trap、logger、eval等。等。猾燎缔涂群餐龋膝彭肿越纽巷席篱越馈疲明诺抚煞敦押悍几玄命桥山幼燥第3章Shell及其编程第3章Shell及其编程3.6.1 通知通知trapv通知通知trap是操作系统监控命令,用于在是操作系统监控命令,用于

71、在Shell脚本中捕捉脚本中捕捉信号。信号。vtrap命令格式:命令格式:trap operateing signals 其中其中signals表示捕捉到的信号;表示捕捉到的信号;operating是专门用来是专门用来处理捕捉到信号后所采取操作的函数,使用时用双引号处理捕捉到信号后所采取操作的函数,使用时用双引号(“”)将)将operateing括起来。括起来。v在在Linux系统中可以发出的系统中可以发出的signals信号及其描述如表信号及其描述如表3.1所示。所示。脂每聘涅叠柔丢钮盯衫旁冻慎嘴糕含训还闺祁诞枕齿梆愈诲朴慈纸塑哼褪第3章Shell及其编程第3章Shell及其编程signal

72、 描述描述0 0 退出退出shellshell,按,按Ctrl-DCtrl-D时产生。时产生。1 1 挂起(挂起(hanguphangup),按),按Ctrl-SCtrl-S时产生,表示通信挂起。时产生,表示通信挂起。2 2 中断(中断(interruptinterrupt),按),按DelDel或或Ctrl-BreakCtrl-Break或或Ctrl-CCtrl-C时产生。时产生。3 3 退出(退出(QuitQuit)。)。4 4 非法命令(非法命令(illegal instrutionillegal instrution)。)。5 5 跟踪跟踪traptrap(trace instruct

73、iontrace instruction)。)。6 IOT6 IOT命令。命令。7 EMIT7 EMIT命令。命令。8 8 异常的浮点格式(异常的浮点格式(floating point exceptionfloating point exception)。)。9 9 终止进程(终止进程(killkill),无法被忽略的信息。),无法被忽略的信息。 10 10 系统总线出错(系统总线出错(Bus errorBus error)。)。12 12 系统函数调用时提供的参数不当。系统函数调用时提供的参数不当。13 13 输出到管道时无进程接收。输出到管道时无进程接收。14 14 超时报警(超时报警(a

74、larm timeoutalarm timeout)。)。15 15 软件结束信号。软件结束信号。16 16 用户自定义信号用户自定义信号1 1(SIGUSR1SIGUSR1)17 17 用户自定义信号用户自定义信号2 2(SIGUSR2SIGUSR2)18 18 子进程结束时发出通知(子进程结束时发出通知(SIGCLDSIGCLD)19 19 电源掉电(电源掉电(SIGPWRSIGPWR)20 20 窗口大小发生改变(窗口大小发生改变(SIGWINSSIGWINS)21 sock21 sock条件变化(条件变化(SIGSOCKSIGSOCK)表表3.1 Linux系统中可以发出的系统中可以发

75、出的signals信号及其描述信号及其描述拖银泻新马菲抢除辕崭酪萍打击橱俏佬迟烯臂调虹句熊搞酮掏贝罩喧尊河第3章Shell及其编程第3章Shell及其编程3.6.1 通知通知trapv例例:vtrap “commands” 3 4表示如果捕捉到信号表示如果捕捉到信号3、4,则执行相应的则执行相应的commands命令。命令。vtrap “”2,3表示如果捕捉到信号表示如果捕捉到信号2、3则忽略信号则忽略信号2、3,用户不终止该脚本。,用户不终止该脚本。vtrap 2、3表示复位信号表示复位信号2、3,用户可以终止该脚本。,用户可以终止该脚本。光砖合疙纯聪喉张边膛吠硒皿舜酣史输霓湾夸镊啄疽斋缮跃

76、敷捐榨饶玄扭第3章Shell及其编程第3章Shell及其编程3.6.1 通知通知trap$cat traptest1#!/bin/bashdeletedir () echo “delete directory function” rm /home/liuxim/exer exitcounter=0trap “deletedir” 2while : do counter=expr $counter + 1 echo $counter done鼠言蓟式箕雍媚曲罩秋读碴剧袜逮孕菌掏伺新乌安拽涸罗粮冷铱薛氛琵芳第3章Shell及其编程第3章Shell及其编程3.6.1 通知通知trap执行脚本:执行脚

77、本:$ ./traptest1123129delete directory function $衬杂湿赫蔚舱简霞帽柑妻侈称售阜须铃弛跺用矿贸式胞呼趁武蜕桓鹿罗狙第3章Shell及其编程第3章Shell及其编程3.6.3 loggervLinux系统的一个特征是存在日志文件。日志文件通常位系统的一个特征是存在日志文件。日志文件通常位于目录于目录/var/log下,取名为下,取名为messages。v当系统管理员需要记录日志时,可使用命令当系统管理员需要记录日志时,可使用命令logger用于发用于发送需要记录的消息。送需要记录的消息。vlogger命令格式:命令格式:logger i messag

78、evi选项表示在消息中记录发送消息的进程号。选项表示在消息中记录发送消息的进程号。篮蒂伪寸火赤鄂伴酷骄妒般总谨很枣柠吓肚藩卫厨搔号贯诣讥军股泉殉棉第3章Shell及其编程第3章Shell及其编程3.6.4 evalveval是一个在是一个在Shell下执行的命令,在命令前加上下执行的命令,在命令前加上eval,eval会将字符串解释成命令并执行。会将字符串解释成命令并执行。v例:例:v$date_1=“date”v$echo $date_1vdatev$eval $date_1vTue Apr 1 17:11:40 TAIST 2003 v$樟洞篡三母棚京缠砾俗委镣软垫熄怪疑凹应慧臭害囊券距迢

79、孽娱葬冉民啡第3章Shell及其编程第3章Shell及其编程奢朴鼻桃榷只豹彪鸦巴腾男秃群墙瞒旷苞粒户袋吱仔谷乃秤版祝郸翔鲜站第3章Shell及其编程第3章Shell及其编程3.7 Shell Script编程应用实例编程应用实例啡牟撂敌畏且兽捡煤豌育骇党抽奥琢蛇彰柠芋撂灶剁非臼陌氟蚀妒备磕们第3章Shell及其编程第3章Shell及其编程3.7 Shell Script编程应用实例编程应用实例v下例是按下例是按/etc/hosts文件中的文件中的IP地址地址ping所有主机的脚所有主机的脚本。本。$cat pinghostmore /etc/hosts |grep -v # |awk prin

80、t $1 |while read ndo ping -cl $ndone$包左酬绷圣皿幽蜘伏揩苛产哦康曼刀损灿裴沧陕固馈佑萄葱搂鞭裕狂理俞第3章Shell及其编程第3章Shell及其编程3.7 Shell Script编程应用实例编程应用实例v下例是一个定期查看邮箱的程序,当邮箱的内容变化时,下例是一个定期查看邮箱的程序,当邮箱的内容变化时,程序行显示程序行显示“you have mail”。$cat checkmailMAIL=/var/mail/whoami #system dependentt=60x=ls -l $MAILwhile :do y=ls -l $MAIL echo $x

81、$y x=$y sleep $tdone | awk if ($5$14) print you have mail院伐际叛皂拢池庞撅涅臆污衅刃即额抡骗杨负重寝洽评蔑闹贱谢脑棍肖糕第3章Shell及其编程第3章Shell及其编程3.8 本 章 小 结本章小结本章小结v本章主要讲述了本章主要讲述了Shell脚本的编制。脚本的编制。v首先讲述了首先讲述了Shell的主要功能及的主要功能及B-Shell、C-Shell、K-Shell的特征;然后介绍了如何编写一个的特征;然后介绍了如何编写一个Shell脚本程序,脚本程序,涉及到了变量、语法结构、函数的用法以及一些相关工具涉及到了变量、语法结构、函数的用法以及一些相关工具的使用。最后介绍了一些典型的的使用。最后介绍了一些典型的Shell脚本实例。脚本实例。v熟练掌握熟练掌握Shell脚本程序的设计,对日常系统维护有很大脚本程序的设计,对日常系统维护有很大帮助,很多重复进行的、繁琐的事情,都可以交给帮助,很多重复进行的、繁琐的事情,都可以交给Shell脚本程序,实现高效率的系统管理。脚本程序,实现高效率的系统管理。堰哗赛呼半理背秆缺作骑寝鸡瘪涣撮黍赠爹捆畸拖昆液肚萎疥窿齿沃杖青第3章Shell及其编程第3章Shell及其编程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号