shell编程-shell编程-循环语句(1)_第1页
shell编程-shell编程-循环语句(1)_第2页
shell编程-shell编程-循环语句(1)_第3页
shell编程-shell编程-循环语句(1)_第4页
全文预览已结束

付费下载

下载本文档

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

文档简介

1、shell编程shell编程循环语句(1)shell编程之循环语句(1)目标:完成这一章,你将能够作以下事情:使用while语句在条件为真的时候重复地执行一段代码。 使用until语句重复执行一段代码直到条件为真。 使用交互性的for语句进行循环控制。 1.循环的简单介绍目标: 重复的执行一段命令列表。控制; 基于一个关键命令的返回值。三种格式: while . do . done until . do . done for . do . done循环语句让你可以重复执行一个命令列表,而决定是继续循环还是跳出循环是基于一个命令的返回值。test命令常常被用来控制一个循环是否继续。与分支语句不同

2、的是,在分支语句中开始一个分支语句的关键字和结束一个分支语句的关键字是相反的(if/fi 和case/esac),循环语句由一个关键字和一些条件开始,循环体整个用do/done来包围起来。2.使用let来进行算术计算语法:let expression or ( expression )例子:$ x=10$ x=12$ y=2 $ let x 10 )$ let x = x / (y+1) $ echo $?$ echo $x $ 04 $ if (x 10 )$ ( x = x + 1 ) then echo x greater$ echo $x else echo x not greater

3、5 fix greater循环语句通常使用一个增长的数字变量来进行控制。使用let命令,可以在shell脚本中使用算术表达式。这个命令允许使用长的整数运算。在上例中,expression代表一个shell变量的算术表达式和能够被shell识别的操作符,而( )可以替let命令。shell能够识别的表达式如下所示:操作符描述- 减去! 逻辑相反* / % 乘,除,余数+ - 加,减= 关系比较= != 等于不等于= 赋值括号能够被用作改变表达式中计算的顺序,就像在let x=x/(y+1)中一样注意双引号被用来忽略括号的特殊含义。同样如果你希望使用空格来分隔操作符和操作符的时候,就必须使用双引号

4、,或者( )语句:let x = x + (y / 2) 或者( x= x+ (y / 2) )当使用逻辑和关系操作符,(!,=,+,=),的时候,shell会返回一个代码变量,?会反映结果是真还是假,再一次说明,必须使用双引号来防止shell将大于和小于运算符当作I/O重定向。3.while语句重复执行循环体,直到条件为真 语法:while list Ado list Bdone例子:$ cat test_whileX=1while ( X do echo hello X is $X let X=X+1 done命令执行的过程如下:1.list A中的命令被执行。2.如果list A中的最后

5、一个命令的返回值为0(真),执行list B。3.回到第一步。4.如果list A中的最后一个命令的返回值不为0(假),跳到下面done关键字后的第一个命令。提醒:注意while循环会无穷执行下去,因为有一些循环的控制命令的返回值永远为真。$ cat while_infinitewhile truedo echo hellodone$ while_infinitehellohello. .ctrl + c4. while结构举例例A:例B如果ans为yes就重复执行 当有命令行参数时重复执行ans=yeswhile ($# != 0 )while do $ans = yes if test -

6、d $1do thenecho Enter a nameecho contents of $1;read namels -F $1echo $name s fiecho Continue? shiftecho Enter yes or no echo There are $# itemsread ans echo left on the cmd linedone done上例是两个while语句的例子,例A提示用户输入,然后对用户的输入进行判断,来决定是否继续执行循环,例子B中,循环会对命令行中每一个参数进行判断,如果参数是一个目录,这个目录中的内容会被显示出来。如果这个参数

7、不是一个目录,程序会跳过。注意shift命令的用法,它允许一个一个存取每一个参数。和while命令一起使用可以使这个循环非常灵活。它不关心参数的个数是1个还是100个,循环会继续执行直到所有的参数都被存取。注意,如果你希望循环至少执行一次,就必须进行某些设置。例A中会执行循环体至少一次因为ans已经被设为yes。在例B中,如果程序的执行不带任何参数($#等于0),这个循环就一次都不会执行。5.until语句重复循环直到条件为真为止。语法:例子:until$ cat test_untillist A X=1do until ( x 10 )list B dodoneecho hello X is

8、 $Xlet X=X+1 done $ test_until hello X is 1 hello X is 2 hello X is 3. hello X is 10until语句是shell提供的另一种循环机制,它会持续执行命令(list B)直到一个条件为真为止。同while循环类似,条件判断由list A中的最后一条命令的返回值来决定的。命令的执行过程如下:1.list A中的命令被执行。2.如果list A中最后一条命令的返回值为非0(假),执行list B。3.返回到第一步。4.如果list A中的最后一条命令的返回值为0(真),跳到done关键字后的第一条命令。注意:until循

9、环的无穷执行下去,因为有些循环语句中的控制语句的返回值始终为假。$ x=1$ until $ x -eq 0 do echo hello donehellohellohello.ctrl + c6.until的例子例A例B重复执行循环体直到ans为no为止 重复执行循环直到没有命令行参数为止ans=yes until ( $# = 0 )until do $ans = no if test -d $1do thenecho Enter a name echo context of $1;read name ls -F $1echo $name sfiecho Continue?shiftecho Enter yes or noecho There are $# itemsread ans echo left on the cmd line.donedone上例的结构与while语句中的例子类似,但是使用until语句来。注意在两种语句的test条件的逻辑关系是相反的。同时请注意用户输入的敏感性由一些轻微的变化。使用while语句,只有用户的输入的字符串为“yes”时循环才会执行,继续执行循环的条件十分严格,使用until语句,循环会在用户使用与no不同的任

温馨提示

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

评论

0/150

提交评论