zoukankan      html  css  js  c++  java
  • shell脚本(10)-流程控制while与until

    一、while循环介绍

    while循环与for一样,一般不知道循环次数使用for,不知道循环的次数时推荐使用while

     

    二、while语法

    while [ condition ]  #条件为真才会循环,条件为假,while停止循环
        do
            commands
    done  

     

    三、while实战

    1、使用while遍历文件内容

    #!/usr/bin/bash
    
    while read i
      do
        echo "$i"
    done < $1

    查看运行结果:

    [root@localhost test20210728]# sh while-1.sh /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    ......

    2、while实现账户登录判断

    [root@localhost test20210728]# vim while-2.sh
    
    #!/usr/bin/bash
    
    read -p "login: " account
    while [ $account != 'root' ]
      do
        echo "输入的账户不符合条件,请重新输入:"
        read -p "login: " account
    done

    查看运行结果:

    [root@localhost test20210728]# sh while-2.sh 
    login: test
    输入的账户不符合条件,请重新输入:
    login: root1
    输入的账户不符合条件,请重新输入:
    login: root            
    [root@localhost test20210728]#

    3、while+sleep(输出1-10,且每次输出后睡眠1s)

    [root@localhost test20210728]# vim while-3+sleep.sh
    
    #!/usr/bin/bash
    i=1
    while [ $i -lt 10 ];do
      echo -n $i" "
      sleep 1
      i=$((i+1))
    done
    echo

    查询运行结果:(每秒输出一个数字)

    [root@localhost test20210728]# sh while-3+sleep.sh 
    1 2 3 4 5 6 7 8 9

    4、while+break(输出1开始自增,且到5时停止)

    [root@localhost test20210728]# vim while-4+break.sh 
    
    #!/usr/bin/bash
    i=1
    while [ $i -lt 10 ];do
      echo -n $i" "
      if [ $i -eq 5 ];then
        break
      fi
      i=$((i+1))
    done
    echo

    查看运行结果:

    [root@localhost test20210728]# sh while-4+break.sh
    1 2 3 4 5 

    5、while+continue(输出1-10开始自增,且到5时跳过输出)

    [root@localhost test20210728]# vim while-5+continue.sh 
    
    #!/usr/bin/bash
    i=0
    while [ $i -lt 10 ];do
      i=$((i+1))
      if [ $i -eq 5 ];then
        continue
      fi
      echo -n $i" "
    done
    echo

    查看运行结果:

    [root@localhost test20210728]# sh while-5+continue.sh 
    1 2 3 4 6 7 8 9 10

     

    四、until介绍

    和while正好相反,until是条件为假时开始执行,条件为真停止执行

     

    五、until语法

    until [ condition ]  #注意,条件为假until才会循环,until停止循环
        do
            commands代码块
    done

     

    六、until案例

    1、until实现输出10到20

    [root@localhost test20210729]# vim until_test.sh
    
    #!/usr/bin/bash
    
    num=10
    until [ $num -gt 20 ]
      do
        echo $num
        num=$((num+1))
    done

    查看运行结果:

    [root@localhost test20210729]# sh until_test.sh 
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

     

  • 相关阅读:
    如何在Linux下修改Mysql的用户(root)密码
    CentOS 6.x 如何升级 glibc 2.17
    Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
    darkflow测试和训练yolo
    使用 Alibaba 的 Homebrew 镜像源进行加速
    树莓派开启SSH的N种方法
    Linux开启ssh服务
    在Linux中创建静态库.a和动态库.so
    linux下动态链接库(.so)的显式调用和隐式调用
    删除Win10资源管理器中的3D对象/音乐/视频文件夹
  • 原文地址:https://www.cnblogs.com/mrwhite2020/p/15017987.html
Copyright © 2011-2022 走看看