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

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. vue中<select>绑定事件

    <div id="app"> <select v-model="selectItem" @change="selectFn($eve ...

  2. 处女座与复读机 DP

    题目链接:https://ac.nowcoder.com/acm/contest/327/G 题意:给你两个字符串序列,让你根据第二个序列判断是不是 复读机,复读机会有以下特征 1.       将任 ...

  3. python - 初识面向对象

    1.初识面向对象       面向过程:一切以事务的发展流程为中心           优点:负责的问题流程化,编写相对简单         缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...

  4. 老版本db2这里下

    https://www-01.ibm.com/support/docview.wss?uid=swg27007053 db2 10.5.10.1.9.x等 下最新FIX版即可

  5. Ubuntu安装tomcat

    1.下载需要的tomcat二进制包(tar.gz)结尾的. https://tomcat.apache.org/download-80.cgi 2.通过xftp5 上传到指定的文件夹 3.cd进指定文 ...

  6. 转载:dos批处理中路径获取

    在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0.      这两个变量的用法和代表的内容是不同的.  1. %cd% ...

  7. Java编程思想--控制执行流程

    java控制流程设计的关键字包括if-else,while,do-while,for,return,break,continue以及switch.(go-to) 1.while在迭代之前计算一次布尔表 ...

  8. 解决Charles https抓包显示<unknown>

    用mac电脑开发安卓的都应该知道青花瓷吧~(不知道的都是小菜鸡,邪恶.jpg) Charles类似Windows版的Fiddler(没用过Fiddler的都是小菜鸡中的战斗机,嘲笑.png),基本用法 ...

  9. Ubuntu18.04安装常用软件

    一.VMwareWorkstation 1.到官网下载VmwareWorkstation,选择Linux版本 2.将下载下来的安装包放到桌面给予x权限,通过命令行进入到桌面的目录sudo ./执行安装 ...

  10. 【Java集合系列四】HashSet和LinkedHashSet解析

    2017-07-29 16:58:13 一.简介 1.Set概念 Set可以理解为集合,非常类似数据概念中的集合,集合三大特征:1.确定性:2.互异性:3.无序性,因此Set实现类也有类似的特征. 2 ...