zoukankan      html  css  js  c++  java
  • 运维脚本while语法

    循环的意思就是让程序重复地执行某些语句;

    whiler循环就是循环结构的一种,当事先不知道循环该执行多少次,就要用到while循环;

    while循环语句的运行过程

    使用while循环语句时,可以根据特定的条件反复执行一个命令,直到条件不满足为止;

    while会出现死循环的过程,因此循环体内的命令序列内应包括修改测试条件的语句

    while语句的语法结构:

    image

    image

    注意:

    使用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结束循环

    执行的结果

    image

    检验:

    image

    image

    也可以使用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

    执行结果

    clip_image002

    实战2

    针对上诉要求主要设计思路如下

    if通过变量RANDOM可获得一个小于2十六次方的随机整数,计算其与1000的余数即可获得0~999的随机价格,反复操作可以通过true作为测试条件,在用户猜出实际价格为止,判断猜测价格与实际价格的过程使用if语句实现,嵌套在while循环内使用变量来计算猜测的次数

     

    例如:image

    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

    执行脚本的结果

    clip_image002[4]

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

    1、for :读取不同的变量值,逐个执行同一组命令,直到取值完毕退出,变量值以空格分隔
    语法: for 变量值in 取值列表
    do
    命令
    done
    2、while :重复测试某个条件,成立则执行,进入下一个循环,直到条件不成立为止
    语法: while [ 条件测试 ]
    do
    命令
    添加更改测试条件语句
    done
    批量添加用户: 
    i=QS
    While [ $i -le $JS ]
    do
    useradd $BM$i
    echo“123456”Ipasswd --stdin $BMSi
    let i++
    done
    while条件为true : 代表永远为真,死循环,必须使用exit或break命令才结束循环
    必须进行递增,避免死循环: 方法:
    i=expr i + 1
    let i=i+1
    let i++
    3、case :针对变量的不同取值,分别执行不同的命令序列
    语法: case 变量值 in
    模式1)
    命令序列1
    ;;
    模式2)
    命令序列2
    ;;
    ......
    *)
    默认命令序列
    esac
    取值时,中括号[ ],任选其一
    横杠—,代表取值范围
    竖杠|,代表或者

  • 相关阅读:
    Python_命名空间和作用域_25
    Python_函数_复习_习题_24
    Python_每日习题_0001_数字组合
    Python_试题_23
    Python_初识函数和返回值_22
    linux-shell-引用-命令替换-命令退出状态-逻辑操作符
    linux-shell-变量参数
    Python-复习-文件操作-21
    Python-注册登陆-20
    linux-vim
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/10789232.html
Copyright © 2011-2022 走看看