• shell-while前循环语句


    基本语法

      while expression
      do
            statements1
            statements2
            ......
      done
    

    expression是测试表达式,do到done之间是循环体和for,until一样
    while也称为前测试循环语句,重复次数是利用一个条件来控制是否继续重复执行这个语句。为了避免死循环,必须保证循环体中包含循环出口条件即表达式存在退出状态为非0的情况。

    计数器控制while循环结束

    计数器就是一个变量,在该变量的范围内执行循环体,不在计数器范围内,就退出循环

      #!/bin/bash
      i=1
      while [[ "$i" -lt 10 ]]
      do
              let "sum=i**2"
              echo "$i 的平方为 $sum"
              let "i+=1"
      done
    

    输出结果为:

    结束标记控制while循环

    有时,循环我们是不知道范围,只有脚踩西瓜皮走到哪里滑到哪里,什么时候停呢?自然是西瓜皮滑不动的时候咯,那么我们把"西瓜皮滑不动"这句话提前告诉shell,什么时候我说"西瓜皮滑不动了",就代表结束了。
    例如:写一个简单的验证码的小脚本,只有输入0或者验证码1234才能退出程序

      #!/bin/bash
      echo "请输入验证码1234,判断是否是人机:"
      read sum
      while [[ "$sum" != 0 ]]
      do
              if [ -z "$sum" ];then
                      echo "没输入验证码,请再次输入"
                      read sum
              elif [ "$sum" != "1234" ];then
                      echo "验证码错误,请再次输入"
                      read sum
              else
                      echo "验证成功"
                      exit 0;
              fi
      done
    

    输出结果:

    唯一需要理解的就是,当sum的值等于0时,这个判断整体 [[ "$sum" != 0 ]]就是非0的会退出循环,也就是说我们要保证第一次或某次$sum返回while的值是0,所以我们把1234输入成功后,exit 0告诉while 执行成功,退出码为0,不符合[[ "$sum" != 0 ]],这样while检查时expression的值就不是0,就会退出循环

  • 相关阅读:
    P1308 统计单词数(cin,getline() ,transform() )
    解决ASP.NET中的各种乱码问题
    GUID
    c# Thread、ThreadPool、Task的区别
    线程学习参考
    异步
    Lamda简单使用
    ubuntu上安装docker
    Git设置ssh密钥
    Git客户端(TortoiseGit)基本使用详解
  • 原文地址:https://www.cnblogs.com/hxlinux/p/12939975.html
Copyright © 2020-2023  润新知