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,就会退出循环

猜你喜欢

转载自www.cnblogs.com/hxlinux/p/12939975.html