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

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、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
取值时,中括号[ ],任选其一
横杠—,代表取值范围
竖杠|,代表或者

运维脚本while语法的更多相关文章

  1. 编写一个可复用的SpringBoot应用运维脚本

    前提 作为Java开发者,很多场景下会使用SpringBoot开发Web应用,目前微服务主流SpringCloud全家桶也是基于SpringBoot搭建的.SpringBoot应用部署到服务器上,需要 ...

  2. (二)SpringBoot应用运维脚本

    SpringBoot应用运维脚本 一.获取PID 二.Kill命令 三.nohup命令 四.编写SpringBoot应用运维脚本 4.1全局变量 4.2编写核心方法 4.3Info方法 4.4stat ...

  3. python常用运维脚本实例

    转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 ...

  4. 转:python常用运维脚本实例

    python常用运维脚本实例 转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...

  5. python常用运维脚本实例【转】

    file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 . 首先 ...

  6. sql server自动化运维脚本

    数据库运维中盛传一个小段子,我误删除了数据库,改怎么办?有备份还原备份,没有备份就准备简历!听起来有趣但发生在谁身上,谁都笑不起来.接触了很多的客户发现90%客户的运维策略都不是很完善.本篇就分享一些 ...

  7. 运维shell全部语法进阶

    Linux运维之shell脚本进阶篇 一.if语句的使用 1)语法规则 1 2 3 4 5 6 7 8 9 if [条件]     then         指令 fi 或 if [条件];then ...

  8. Shell编程案例:修改运维脚本输出效果

    1. 需求:每日运维检查脚本dailymonitor.sh显示对服务器测试结果,其中命令 zabbix_get -s 192.168.111.21 -p 10050 -k "net.tcp. ...

  9. Python运维脚本整理

    Python 实现的自动化服务器管理 import sys import os import paramiko ssh = paramiko.SSHClient() ssh.set_missing_h ...

随机推荐

  1. zoj2930

      各点向S连推迟的花费,向T连提前的花费,S表示提前,T表示推迟.a推迟b也推迟b往a连INF.最小割后从各点出发,能直接或间接到T的就是必须推迟的,剩下的就是能提前的. #include < ...

  2. python-文件读写

    python对文件的操作对文件操作的步骤:1.打开文件2.读写文件3.关闭文件 一.读取文件的方法有三种:read(),readline(),readlines()f.readline() #每次读出 ...

  3. kafka 心跳和 reblance

    kafka 的心跳是 kafka consumer 和 broker 之间的健康检查,只有当 broker coordinator 正常时,consumer 才会发送心跳. consumer 和 re ...

  4. css三种基本选着器

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  5. 小菜鸟从0基础开始学Linux系统

    随着当今信息时代的迅速发展,Linux凭借其诸多优势从操作系统中脱颖而出,受到越来越多电脑用户的青睐.Linux是一个集安全.稳定.自由等众多优点于一身的操作系统,不可思议的是这么好的系统还是免费的! ...

  6. 不同版本的IDE ,对应的选项 有变化

    xx.dproj对应的项目级选项 也不同,所以,要分别保存为不同的文件. 如果不同的IDE,打开同一个 .dproj文件,会因为 选项界面的选项不同,提示一些错误.

  7. npm由来和作用

    npm由来 本文转载自: https://blog.csdn.net/qq_37696120/article/details/80507178 npm作用 本文转载自: https://www.cnb ...

  8. ubuntu16.04 登陆不进桌面

    ubuntu 16.04 登陆不进桌面 问题描述: 系统软件升级之后,重启,在登陆界面输入密码后,回车,闪现一次黑屏和一些代码,然后又重新回到登陆界面. 原因分析: 有两种可能: 1.主目录下的.Xa ...

  9. 遇到的难题之一 —— js方法toFixd()

    工作中遇到金额需要保留两位小数的需求,单价1.265,数量为1,正常来讲金额应为1.27,用了toFixd()方法后结果为1.26. 最终找到问题所在:1.265 - 1.26 = 0.0049999 ...

  10. 单总线(1-Wire Bus)技术及其应用

    单总线(1-Wire Bus)技术及其应用 reference: http://www.doc88.com/p-2106151016582.html 摘要:介绍了美DALLAS公司推出的单总线技术的原 ...