Shell循环结构讲解_第1页
Shell循环结构讲解_第2页
Shell循环结构讲解_第3页
Shell循环结构讲解_第4页
Shell循环结构讲解_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块3Shell基础编程Shell循环结构3.4Shell脚本中的循环在LinuxShell的编程过程中,有时需要反复执行某一个命令或某一组命令,这时要用到循环语句。循环语句用于特定条件下决定某些语句重复执行的控制方式,它具有封闭型的单入单出性质,如果未达到结束状态,将一直执行循环体内的操作。Shell中常用的循环语句有while循环语句和for循环语句等。3.4.1while循环while循环的重复执行次数是利用一个条件来控制的,它的语法结构如下。while条件测试表达式do操作语句(可以多条)donewhile循环语句执行的过程是:先判断条件测试表达式的结果,如果为真则执行循环体,并且执行完循环体后进行下一次循环,否则退出循环执行done后的命令。3.4.1while循环【例3-8】编写Shell脚本,让用户从键盘输入1~10的整数来进行猜数游戏。3.4.1while循环【例3-9】编写Shell脚本,让用户从键盘输入一个整数n,求1+2+…+n的和。3.4.2for循环for循环是LinuxShell中最常用的结构。for循环常用的有两种结构:第一种结构是列表for循环,第二种结构是类C语言风格的for循环。1.列表for循环列表for循环语句用于将一组命令执行已知的次数,它的语法结构如下。for变量in{list}do操作语句(可以多条)done此for循环执行次数和list列表中常数或字符串的个数相同,先将in后list列表的第一个常数或字符串赋值给变量,然后执行循环体;接着将list列表第二个赋值给变量,再次执行循环体。这个过程持续到list列表执行完毕,然后执行done后的操作命令。43.4.2for循环[root@localhost~]#vimfor1.sh[root@localhost~]#catfor1.sh#!/bin/bashforiin12345doecho"welcome,$itimes"done[root@localhost~]#shfor1.shwelcome,1timeswelcome,2timeswelcome,3timeswelcome,4timeswelcome,5times【例3-10】编写Shell脚本显示5次欢迎操作。3.4.2for循环[root@localhost~]#vimfor2.sh[root@localhost~]#catfor2.sh#!/bin/bashforiin{1..5..2}doecho"Thenumberis$i"done[root@localhost~]#shfor2.shThenumberis1Thenumberis3Thenumberis5【例3-11】编写Shell脚本显示出5以内的奇数。3.4.2for循环上例中通过{1..5..2}实现1~5内的奇数按步数2进行跳跃。同样可以通过seq命令实现按2递增来输出1~5内的所有奇数,只需将上例中的for循环那一行更改为以下内容即可。foriin`seq125`注意的是反引号(``)3.4.2for循环[root@localhost~]#vimfor3.sh[root@localhost~]#catfor3.sh#!/bin/bashforiin`ls*.sh`//注意反引号(``)和通配符(*)doecho-en"$i\t"//解析“\t”和不换行done[root@localhost~]#shfor3.shcase1.shcase2.sh……省略部分信息……while2.sh【例3-12】编写Shell脚本输出当前目录所有以“.sh”结尾的文件。3.4.2for循环2.类C语言风格的for循环类C语言风格的for循环一般用于循环次数已知的情况,它的语法结构如下。for((表达式1;表达式2;表达式3))do操作语句(可以多条)done其中,表达式1为循环变量赋初值的语句;表达式2为判断条件测试表达式的结果,如果为真则执行循环体,并且执行完循环体后进行下一次循环,否则退出循环执行done后的命令;表达式3用于改变循环变量的语句。3.4.2for循环[root@localhost~]#vimfor4.sh[root@localhost~]#catfor4.sh#!/bin/bashread-p"Pleaseinputthenumber:"inNumfor((sum=0,i=1;i<=$inNum;i+=2))dosum=$[sum+i]doneecho"Thesumis$sum"[root@localhost~]#shfor4.shPleaseinputthenumber:3Thesumis4[root@localhost~]#shfor4.shPleaseinputthenumber:100Thesumis2500【例3-13】编写Shell脚本,让用户从键盘输入一个整数n,求1~n的奇数和。3.4.3嵌套循环一个循环体内包含另一个完整的循环结构,称为循环嵌套。在外部循环的每次执行过程中都会触发内部循环,直至内部完成一次循环,才接着执行下一次外部循环。for循环和while循环可以相互嵌套。3.4.3嵌套循环【例3-14】编写Shell脚本,利用for循环完成下图所示的九九乘法表。3.4.3嵌套循环【例3-15】编写Shell脚本,利用for循环嵌套实现一个8×8格的棋盘。为了完成此例,需要先了解Shell脚本中echo显示内容带颜色显示的方法及格式,其中“F”为字体颜色,编号为30~37;“B”为背景颜色,编号为40~47。echo显示带颜色需要使用参数“-e”,格式为:echo-e"\033[B;Fm字符串\033[0m"或者echo-e"\033[F;Bm字符串\033[0m"3.4.3嵌套循环其中,B和F有其一亦可,具体的范围及颜色见表3-5。表3-5常用的字体及背景编号对应颜色3.4.3

嵌套循环[root@localhost~]#vimfor6.sh[root@localhost~]#catfor6.sh#!/bin/bashfor((i=1;i<=8;i++))dofor((j=1;j<=8;j++))dototal=$[$i+$j]tmp=$[$total%2]if[[$tmp-eq0]];thenecho-en"\033[44m\033[0m"elseecho-en"\033[41m\033[0m"fidoneecho""//换行done[root@localhost~]#shfor6.sh下面进行【例6-15】的Shell脚本编写。3.4.3

嵌套循环上例使用了类C语言风格的for嵌套循环实现了8×8的棋盘:-通过i和j之和取模来使棋盘黑白相间,其中,“\033[47m”表示白色,“\033[40m”表示黑色,其后的空格表示每个棋格的长宽,“\033[0m”表示关闭所有属性.-同时可以通过“\033[5m”来达到闪烁的效果。3.4.4

循环控制符在LinuxShell编程中,有时需要立即从循环中退出:-可以使用break循环控制符退出循环;-使用continue循环控制符仅退出本次循环而执行后续的循环。3.4.4

循环控制符1.break循环控制符break语句可以应用在for和while循环语句中,用户强行退出循环,下面通过修改【例3-14】来说明break循环控制符的作用。3.4.4循环控制符从上面的脚本可以看出,虽然for循环设计为输出九九乘法表,但是由于$i大于3时使用break循环控制符终止了for循环语句,因此输出只到3。需要注意的是,如果有多个循环需跳出,则要在相应的位置加上break语句,因为break语句仅能退出当前所处的循环。3.4.4循环控制符2.continue循环控制符continue循环控制符也是应用在for和while

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论