shell基础(八)-循环语句

国庆过后;感觉有点慵懒些了;接着上篇;我们继续来学习循环语句。

一. for循环

与其他编程语言类似,Shell支持for循环。

for循环一般格式为:
for 变量 in 列表
do
    command1
    command2
    ...
    commandN
done

列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量

例如,顺序输出当前列表中的数字

for01.sh
$ cat for01.sh
#!/bin/sh
for i in 1 2 3 4 5
do
 echo "this is $i"
done
$ ./for01.sh
this is 1
this is 2
this is 3
this is 4
this is 5

当然也可以向其他语言那样for ((i=1;i++<5));但是是要双括号;这个是与众不同。

#!/bin/sh
for ((i=1;i<=5;i++))
do
 echo "this is $i"
done

【注意】in 列表是可选的,如果不用它,for 循环使用命令行的位置参数。如下:

$ cat for01.sh
#!/bin/sh
for i
do
 echo "this is $i"
done
$ ./for01.sh 1 2 3 4 5
this is 1
this is 2
this is 3
this is 4
this is 5

【note】对于列表;像上面一样;其实命令ls当前目录下的所有文件就是一个列表



二.while 循环

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件

#其格式为:
while command
do
   Statement(s) to be executed if command is true
done

命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。
以for循环的例子。

$ cat while01.sh
#!/bin/sh
i=0
while [ $i -lt 5 ]
do
 let "i++"
 echo "this is $i"
done
$ ./while01.sh
this is 1
this is 2
this is 3
this is 4
this is 5

其实while循环用的最多是用来读文件。

#!/bin/bash
count=1
cat test | while read line        #cat 命令的输出作为read命令的输入,read读到的值放在line中
do
   echo "Line $count:$line"
   count=$[ $count + 1 ]
done
或者如下
#!/bin/sh
count=1
while read line
do 
  echo "Line $count:$line"
   count=$[ $count + 1 ]
done < test

【注意】当然你用awk的话;那是相当简单;awk ‘{print "Line " NR " : " $0}‘ test
输出时要去除冒号域分隔符,可使用变量IFS。在改变它之前保存IFS的当前设置。然后在脚本执行完后恢复此设置。使用IFS可以将域分隔符改为冒号而不是空格或tab键

例如文件worker.txt
Louise Conrad:Accounts:ACC8987
Peter Jamas:Payroll:PR489
Fred Terms:Customer:CUS012
James Lenod:Accounts:ACC887
Frank Pavely:Payroll:PR489
while02.sh如下:
#!/bin/sh
#author: li0924
#SAVEIFS=$IFS
IFS=:
while read name dept id
 do
  echo -e "$name\t$dept\t$id"
 done < worker.txt
#IFS=$SAVEIFS


三.until循环

until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反

until 循环格式为:
until command
do
   Statement(s) to be executed until command is true
done

command 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环

$ cat until01.sh
#!/bin/sh
i=0
until [ $i -gt 5 ]
do
 let "i++"
 echo "this is $i"
done

一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。详细介绍until就不必要了



四. break和continue命令

1. break命令
break命令允许跳出所有循环(终止执行后面的所有循环)
2.continue命令
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

break01.sh
#!/bin/sh
for ((i=1;i<=5;i++))
do
 if [ $i == 2 ];then
 break
 else
 echo "this is $i"
 fi
done

至于continue命令演示;你就把break替换下;执行看下效果就行了。不解释。

时间: 2024-10-27 05:29:56

shell基础(八)-循环语句的相关文章

VBS基础篇 - 循环语句(3) - For...Next

VBS基础篇 - 循环语句(3) - For...Next 指定循环次数,使用计数器重复运行语句,语法结构如下: 1 2 3 4 5 For counter = start To end [Step step]     [statements]     [Exit For]     [statements] Next 主要参数:        counter:用做循环计数器的数值变量.这个变量不能是数组元素或用户自定义类型的元素.        start:counter的初值.        

Shell中的循环语句实例

1.for循环语句实例1.1 最基本的for循环 #!/bin/bash for x in one two three four do     echo number $x done 注:"for" 循环总是接收 "in" 语句之后的某种类型的字列表.在本例中,指定了四个英语单词,但是字列表也可以引用磁盘上的文件,甚至文件通配符.实例1.2 #!/bin/bash for x in /var/log/* do     #echo "$x is a file

VBS基础篇 - 循环语句(4) - For Each...Next

VBS基础篇 - 循环语句(4) - For Each...Next For Each...Next 循环与 For...Next 循环类似.For Each...Next 不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句.这在不知道集合中元素的数目时非常有用. 语法结构如下:         1 2 3 4 5 For Each element In group     [statements]     [Exit For]     [statements]

04 shell编程之循环语句

Shell编程之循环语句 学习目标: 掌握for循环语句编程 掌握while循环语句编程 目录结构: For循环语句 l  读取不同的变量值,以逐个执行同一组命令 l  For语句结构 for 变量名 in 取值列表 do 命令序列 done l  for执行原理 for 变量=取值1,do命令序列.取值2,取值3-取值n,分别do.所有取值都执行完之后,done结束循环. l  根据IP地址检查主机状态 Ip地址存放在ip.txt文件中 每行一个 使用ping命令检测各主机的联通性 l  根据

python基础之循环语句

一.if条件语句: 语法: 1.if单分支(单重条件判断) if expression: expr_true_suite 注释:expession为真执行代码expr_true_suite if单分支(单重条件判断) if not  active or over_time >= 10: print('Warning:service is dead') warn_tag+=1 2.if+else循环语句 if 1<2: print('ok') else: print('no') 3.多分支if+

python基础:循环语句和判断语句

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. python语句块和缩进 缩进是Python语法的一部分:在python语句中,空格是用来区分块的,每一块的语句,缩进量(空格)应该是相同的 Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字: 增加缩进表示语句块的开始,而减少缩进则表示语句块的退出. 在Python中,冒号(:)用来标识语

java语言基础与go语言基础,循环语句的区别

java语言  循环语句 for(表达式1(参数初始化):表达式2(条件判断):表达式3(更新循环变量)){ 语句循环操作: } 首先;参数的初始化,接下来条件判断,(条件成立),再执行循环操作,然后更新循环变量,又来做条件判断(条件成立),又执行循环操作:以此循环. 一,循环的三要素 1,循环变量 2,循环条件 3,循环体 二,do-while循环(先循环,再判断,至少循环一次) do{ 语句: }while(条件); 三,while循环(先判断,再循环,有可能一次也不循环) while(条件

Java基础---Java循环语句之while(二十二)

Java循环语句之 while 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 Java 中实现功能时,也经常需要重复执行某些代码,例如,我们为了表示"浓烈的爱",希望输出 1000 行"我爱慕课网!".显然,此时重复敲 1000 遍输出语句是不靠谱滴!!那么,有木有好的办法来解决呢? 有,循环语句! Java 常用的 3 种循环: while . do...while . for 本

Java基础---Java循环语句之do...while(二十三)

Java循环语句之 do...while do...while 循环与 while 循环语法有些类似,但执行过程差别比较大. 语法:  执行过程: <1>. 先执行一遍循环操作,然后判断循环条件是否成立 <2>. 如果条件成立,继续执行< 1 > .< 2 >,直到循环条件不成立为止 特点: 先执行,后判断 由此可见,do...while 语句保证循环至少被执行一次! 例如,依然输出 1000 遍"我爱慕课网",使用 do...while

Java基础---Java循环语句之多重循环(二十七)

Java 循环语句之多重循环 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打