ct38 发表于 2018-8-18 12:45:08

shell脚本(三)while循环语句

  理论部分:
  循环的意思就是让程序重复地执行某些语句;
  whiler循环就是循环结构的一种,当事先不知道循环该执行多少次,就要用到while循环;
  while循环语句的运行过程
  使用while循环语句时,可以根据特定的条件反复执行一个命令,直到条件不满足为止;
  while会出现死循环的过程,因此循环体内的命令序列内应包括修改测试条件的语句
  while语句的语法结构:


  注意:
  使用while循环语句时,有两个特殊的条件测试操作即true(真)和false(假);
  使用true时表示条件永远成立,循环体内的命令序列将会无限执行下去,除非强制终止脚本或使用exit退出脚本;
  反之使用false时循环体将不会被执行; ’这两个特殊条件也可以用在if语句的条件测试中
  应用实例
  使用while语句执行批量添加规范的用户
  stu 1 stu 2…….
  我们也可以使用while批量添加用户,但是前提是用户的命名必须有规范,有规律否则无法使用while进行创建
  vim useradd.sh
  #!/bin/bash
  user="stu"
  i=1
  while [ $i -le 20 ]
  do
  useradd${user}$i
  echo "123456" | passwd --stdin ${user}$i &>/dev/null
  echo "${user}$i Users to add success"
  let i++
  done
  首先定义一个用户名的前缀为stu
  在定义一个变量用于改变条件
  while 当$i 小于等于20 的时候执行下面的命令序列 let i++ 表示每循环一次i的值加1
  当循环到21次的时候这个测试条件不成立了,因为21不小于等于20所以直接调到done结束循环
  执行的结果

  检验:


  也可以使用while循环删除
  vim userdel.sh
  #!/bin/bash
  user="stu"
  i=1
  while [ $i -le 20 ]
  do
  userdel -r   ${user}$i &> /dev/null
  echo "${user}$i Users to del success"
  let i++
  done
  执行结果

  实战2
  针对上诉要求主要设计思路如下
  if通过变量RANDOM可获得一个小于2十六次方的随机整数,计算其与1000的余数即可获得0~999的随机价格,反复操作可以通过true作为测试条件,在用户猜出实际价格为止,判断猜测价格与实际价格的过程使用if语句实现,嵌套在while循环内使用变量来计算猜测的次数
  
  例如:
  vim caijiage.sh
  #!/bin/bash
  price=$(expr $RANDOM % 1000)
  times=0
  echo "The prices of the goods is 0-999,Can you guess what is?"
  while true
  do
  read -p "Please enter your price:" INT
  let times++
  if[ $INT -eq $price ]
  then
  echo "Good you guessed it"
  echo "You guess the total $times times "
  exit 0
  elif
  [ $INT -gt $price ]
  then
  echo "Is too high "
  else
  echo "It's too low "
  fi
  done
  执行脚本的结果

  学会for while已经可以编写一些脚本完成简单的系统管理任务了。

页: [1]
查看完整版本: shell脚本(三)while循环语句