




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
shell 5Windows系统 电脑资料 shell编程之循环语句(2) 7.for语句 对列表的每一条目都进行一次循环过程,每完成一次循环过程就将var赋予列表中下一个条目,直到完成最后一个条目的循环为止 语法:?例子: forvarinlist?$cattest_for do? shell编程之循环语句(2) 7.for语句 对列表的每一条目都进行一次循环过程,每完成一次循环过程就将var赋予列表中下一个条目,直到完成最后一个条目的循环为止 语法: ?例子: for var in list?$ cat test_for do? for X in 1 2 3 4 5 ?list A? do done? echo 2 * $X is c ? let X=X*2 ? echo $X ? done ? $ test_for ? 2 * 1 is 2 ? 2 * 2 is 4 ? 2 * 3 is 6 ? 2 * 4 is 8 ? 2 * 5 is 10 在上例中,关键字为for,in,do和done,var代表一个shell变量的名字,这个变量的赋值会贯穿for循环的执行过程中,list是一串由空格或者tab分割开的字符串,在每一次循环执行都要将一个串赋值给var, for循环的执行过程如下: 1.shell变量var被设置等于list中的第一个字符。 2.list A中的命令会被执行。 3.shell变量var被设置等于list中下一个字符。 4.list A中的命令被执行。 5.循环会持续执行,直到每一个list中的条目都执行过循环为止。 8.for循环的例子 例A: $ cat example_A for NAME in $(grep home /etc/passwd | cut -f1 -d do ?mail $NAME mtg.minutes ?echo mailed mtg.minutes to $NAME done 例B $ cat example_B for FILE in * do ?if ?test -d $FILE ?then ?ls -F $FILE ?fi done for结构是一种非常灵活的循环结构,它能够让循环贯穿任何能产生的列表。列表能很容易地用命令替代来产生,就像第一个例子中一样。使用管道和过滤器,能够从任何事产生一个列表。 如果你要求多次存取相同的列表,你也许想要将它存储到个文件中。你可以使用cat命令来为你的for循环产生列表,正如下例所示: ?$ cat students ?user1 ?user2 ?user3 ?user4 ?$ cat for_student_file_copy ?for NAME in $(cat_students) ?do ?cp test.file /home/$NAME ?chown $NAME /home/$NAME/test.file ?chmod g-w,o-w /home/$NAME/test.file ?echo done $NAME ?done ?$ 存取命令行参数 你可以从命令行参数来产生list: for i in $*?或者?for i do? do? ?cp $i $HOME/backups?cp $i $HOME/backups done ?done 9.break,continue,和exit命令 break n ?中止循环过程的执行,并且跳到下一个命令, continue n?停止循环过程的当前一个反复并且跳到循环中的下一个反复过程的开始部分 exit n ? 停止shell程序的执行,并且将返回值设置为n。 在许多情况下,你可能需要在循环的正常中止条件满足之前放弃一个循环的执行。break和continue命令提供了一种无条件的流程控制。通常是在遇到一个错误的情况下来中止当前的循环继续执行。而exit命令用在不能从某种情况下恢复出来,而必须中止整个程序的运行的时候。 break命令会中止循环并且将控制权传递到done关键字后面的第一个命令。结果是完全跳出这个循环体而继续执行下面的命令。 continue命令有一点不同。当在程序执行过程中遇到这个命令,就会忽略本次循环中剩余的命令,而将控制权交给循环的顶部。这样,continue命令能让你仅仅中止循环过程中的一个反复但是继续从循环的顶部开始执行。 在while和until循环中,这种处理(continue)会导致在初始列表的开始部分继续执行,在for循环中,会将变量设置为列表中的下一个条目,然后继续执行循环。 exit命令停止执行当前的shell程序,并且根据提供的参数为这个shell程序设置一个返回值,如果没有提供返回值参数,当前的shell程序的返回值会被设置为在exit命令之前执行的命令的返回值。 注意:循环的流程控制在正常的情况下应当是通过设置循环开始部分的条件(while,until),或者是列表中的条目都循环完的(for),的情况来结束循环。而对循环过程进行中断操作仅仅应当在循环执行期间遇到没有规律的或者是错误的条件的时候才应当使用。 10.break和continue的例子 while ?true do ?echo Enter file to remove: c ?read FILE ?if test ! -f $FILE ?then ?echo $FILE is not a regular file ?continue ?fi ?echo removing $FILE ?rm $FILE ?break done 这个例子显示break和continue命令的一次有效的使用。这个命令的执行是在while循环的test条件为真的情况下,会始终产生一个为真的结果;这意味着这个循环会是一个无限的循环,除非循环体中的某些命令能中止循环的运行(这就是bread命令需要做的)。如果输入的文件不是一个普通文件,一个错误信息会打印,同时continue命令会提醒用户再输入一次文件名。如果这个文件是个普通的文件,它会被删除,并且break命令被用来跳出这个无穷循环。 11.shell编程之循环总结 let expression ?计算一个算术表达式 (expression) ?计算一个算术表达式 while condition is true do .done? while until condition is true do . done?until for var in list do
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山合作开发与矿产资源勘查许可协议
- 离婚协议中房产过户及居住权保障补充协议书
- 互联网空置商铺租赁与智慧社区服务合同
- 二手房租赁合同中水电费用结算合同
- 南京市厂房租赁合同样本(含设备折旧补偿)
- 离婚协议书:女性权益维护与财产分割细则
- 120万千瓦光伏项目规划设计方案
- 余姚娱乐活动策划方案公司
- 患者发生误吸的应急演练方案
- 瑜伽活动咨询方案范文
- 【基于Creo的NGW型行星齿轮减速器设计9000字】
- DB64∕T 2023-2024 不动产登记操作指南
- 云南省云南师大附中2026届高考适应性月考卷地理及答案(一)
- oa数据安全管理制度
- 旋风除尘器设计选型
- 子宫纵膈微创治疗进展-洞察及研究
- 中医全科课件下载
- 休闲会所规划方案(3篇)
- 氧化还原反应学案高一上学期化学人教版
- 拒绝烟草诱惑向“吸烟”说不!课件-2024-2025学年高二下学期世界无烟日主题班会
- 月嫂证考试试题及答案
评论
0/150
提交评论