目录:
一.while循环与until循环
二.循环控制语句continue break shift
三.特殊用法

一.while循环与until循环

  • 1.while循环

              while CONDITION; do
                  循环体
    done 
  • CONDITION:循环控制条件;进入循环之前,先做一次判 断;每一次循环之后会再次做判断;条件为真,则执行 一次循环;直到条件测试状态为假终止循环。
  • 2.until

       until CONDITION; do 
                    循环体 
        done

    until循环与while循环相反CONDITION:循环控制条件为假,则执行 一次循环;直到条件测试状态为真终止循环。
    例子:显示1-5的数字

                    #!/bin/bash
                          n=0
                        while [ $n -lt 5 ];do
                             let  n=$n+1
                            echo $n
                       done
  • until写法

                                    #!/bin/bash
                                      n=0
                                       until [ $n -eq 5 ];do
                                       let  n=$n+1
                                     echo $n
                                       done

    二.循环控制语句

    continue break shift
    ** 1.continue[N] :提前结束第N层的本轮循环,而直接进入下一 轮判断;最内层为第1层

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

  • 2.break [N]:提前结束第N层循环,最内层为第1层

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

    我们对第一个例子做点修改 在其中加上continue和break

         #!/bin/bash
                  n=0
    while [ $n -lt 5 ];do
          let  n=$n+1
       if [ $n -eq 3 ];then
           continue
        fi
        echo $n
    done
  • 加入continue时输出结果为1245

                 #!/bin/bash
            n=0
       while [ $n -lt 5 ];do
               let  n=$n+1
            if [ $n -eq 3 ];then
               break
            fi
        echo $n
       done
  • 加入break的输出结果为12
    由此可以总结出两者的区别为continue是结束当轮循环
    break是结束当层循环
    3.shift [n] 用于将参量列表 list 左移指定次数,缺省为左移一次。 参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。

                         #!/bin/bash
                          while [ $# -ne 0 ]  ;do
                           echo $1
                            shift
                           done
    
                    输入1 2 3 4 5                  每次显示第一个数
    
                            [root@centos6 app]# ./while.sh 1 2 3 4 5
                              1
                              2
                              3
                              4
                              5

    三.特殊用法

    while read line; do
    循环体
    done < /PATH/FROM/SOMEFILE
    (遍历文件的每一行)

  • 例子
  • 查看一个文件

               [root@centos6 app]# cat 123.txt
                 1
                 2
                 3
                 4
                 5
  • 编写脚本

                           #!/bin/bash
                        while read line ;do
                             n=$[$line+1]
                              echo $n
                         done