SHELL脚本编程循环篇-while循环

                                          作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.while循环的语法格式

while CONDITION; do
  循环体
done


以上参数关键点说明:
  CONDITION:
    循环控制条件,进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环。因此,CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
  进入条件:
    CONDITION为true
  退出条件:
    CONDITION为false

其实也可以写成一行:
  [root@node101.yinzhengjie.org.cn ~]# i=1;while [ $i -le 100 ];do let sum+=i;let i++;done;echo sum=$sum
  sum=5050
  [root@node101.yinzhengjie.org.cn ~]#

 

二.循环控制语句continue

while CONDTIITON1; do
  CMD1
  ...
  if CONDITION2; then
    continue
  fi
  CMDn
  ...
done


使用场景:
  用于循环体中,continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层
[root@node101.yinzhengjie.org.cn ~]# cat shell/continue.sh
#!/bin/bash
#
#********************************************************************
#Author:        yinzhengjie
#QQ:             1053419035
#Date:             2019-11-25
#FileName:        shell/continue.sh
#URL:             http://www.cnblogs.com/yinzhengjie
#Description:        The test script
#Copyright notice:     original works, no reprint! Otherwise, legal liability will be investigated.
#********************************************************************

flag=true

i=0

while [ $i -lt 10 ];do
    let i++
    #如果"$i"的值为7,则跳过本次循环进行下一次循环
    if [ $i -eq 7 ];then 
        continue
    fi
    echo $i
done
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# bash shell/continue.sh
1
2
3
4
5
6
8
9
10
[root@node101.yinzhengjie.org.cn ~]# 
案例展示
[root@node101.yinzhengjie.org.cn ~]# cat shell/continue.sh 
#!/bin/bash
#
#********************************************************************
#Author:        yinzhengjie
#QQ:             1053419035
#Date:             2019-11-25
#FileName:        shell/continue.sh
#URL:             http://www.cnblogs.com/yinzhengjie
#Description:        The test script
#Copyright notice:     original works, no reprint! Otherwise, legal liability will be investigated.
#********************************************************************

flag=true

i=0

while [ $i -lt 3 ];do
    let i++
    for((j=1;j<=10;j++));do
        if [ $j -eq 7 ];then 
            #退出到本层循环的上一轮循环
            continue 2
        fi
        echo j=$j
    done
    echo i=$i
done
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# bash shell/continue.sh 
j=1
j=2
j=3
j=4
j=5
j=6
j=1
j=2
j=3
j=4
j=5
j=6
j=1
j=2
j=3
j=4
j=5
j=6
[root@node101.yinzhengjie.org.cn ~]# 
案例展示2

相关文章: