Shell脚本的三种循环for、while、if------未完

一、for 循环语句的结构

  • 读取不同的变量值,用来逐个执行同一组命令

格式:

<for>  变量名  <in>  取值列表
<do>
   命令序列
<done>

例:

<for>  收件人  <in>  邮件地址列表
<do>
   发送列表
<done>

在这里插入图片描述
实例1:
要求

  • 批量添加客户
  • 用户名存放在users.txt文件中,每行一个
  • 初始密码军设为123456
  • 验证脚本
[root@localhost ~]#vim for2.sh       #创建脚本文件名为for.sh

#!/bin/bash                          
i=`cat /root/users.txt`              #将要创建的用户名放到users.txt文件中(一行一个用户名)
for a in $i                          #每次循环从列表里读取一个用户名
do
   useradd $a                        #创建用户
   echo "123456" | passwd --stdin $a &> /dev/null    #为账户设置密码,为了不让密码信息泄露所以全部仍进黑洞中
   echo "创建用户${a}成功"             #输出
done

保存退出

[root@localhost ~]#chmod +x for2.sh   赋权
[root@localhost ~]#./for2.sh         运行脚本
创建用户cat成功
创建用户pig成功
创建用户dog成功                         创建成功
创建用户yunyang成功
创建用户bird成功
创建用户baoshuaipeng成功
[root@localhost ~]#vim for2.sh

批量删除用户,在刚刚脚本基础上进行修改

[root@localhost ~]#vim for2.sh

#!/bin/bash
i=`cat /root/users.txt`
for a in $i
do
   userdel -r $a
   #echo "123456" | passwd --stdin $a &> /dev/null
   echo "删除用户$a成功" 
done


[root@localhost ~]#./for2.sh
删除用户cat成功
删除用户pig成功
删除用户dog成功
删除用户yunyang成功
删除用户bird成功
删除用户baoshuaipeng成功

实例2:
要求

  • 根据IP地址检查主机状态
  • IP地址存放在ipadds.txt文件中,每行一个
  • 使用ping命令检测各主机的连通性
[root@panrj ~]#vim ip.sh

#!/bin/bash
i=`cat /root/ip.txt`
for aa in $i
do
  ping -c3 -i0.2 -W3 $aa &> /dev/null     ##开始ping检测,-c是ping的次数,-i是每次ping的时间,-w是ping的时候延时时间
if [ $? -eq 0 ]                          ## #判断语句,当使用$?返回0时,说明上面ping成功
then
echo "$aa开启"
echo "$aa关闭"
fi
done

[root@panrj ~]#chmod +x ip.sh
[root@panrj ~]#source ip.sh
192.168.182.1开启
192.168.182.1关闭
192.168.182.2开启
192.168.182.2关闭


实例三:
计算1到100的所有的整数和。

[root@192 ~]#vim for.sh

#!/bin/bash

sum=0           ##对于整数和的运算来说,整数和sum也算是一个变量,所以在运算之前我们需要先定义整数和起始的一个数字,这里起始的数字是0,因为1-100的和是从0开始算起的。
for i in $( seq 1 1 100 )  《或者 for i in {1..100}》    ##遍历需要运算的数字区间,也就是0-100
do
   sum=$[$i+$sum]         #这里是求和的运算。我们可以理解为:这次遍历出来的数字,加上上一次运算出来的整数的和即为这次算出来的整数和。比如这次循环遍历到了3,上次的和是1+2=3,所以这次就等于上次的和1+2=3加上这次遍历的数字3,就得出这次循环算出来的整数和为6.

done
  echo $sum

[root@192 ~]#chmod +x for.sh
[root@192 ~]#./for.sh
5050

二、while循环语句

while语句结构
重复测试某个条件,只要条件成立则反复执行。

语句结构:
<while> 条件测试操作
<do>
	命令序列
<done>

实例一:
要求

  • 批量添加用户
  • 用户名称以stu开头,按数字顺序进行编号
  • 一共添加20个用户,即stu1,stu2…stu20
  • 初始密码均设为123456
[root@192 ~]#vim while.sh

#!/bin/bash
i=0
while [ $i -le 20 ]
do
  useradd stu$i
     echo "123456" | passwd --stadin stu$i &> /dev/null
     echo "用户stu$i添加成功"

 <let i++     #使用let命令进行运算,使a每次加1>     这一步是比较重要的,不加这一步的话会进入死循环
done

在此基础上也可以修改进行删除用户

[root@192 ~]#vim while.sh

#!/bin/bash
i=0
while [ $i -le 20 ]
do
  #useradd stu$i 
# echo "123456" | passwd --stadin stu$i &> /dev/null
#echo "用户stu$i添加成功"
userdel -r stu$i
<let i++     #使用let命令进行运算,使a每次加1>     这一步是比较重要的,不加这一步的话会进入死循环
done

实例二:
猜商品价格小游戏

#!/bin/bash

a=$[ $RANDOM % 1000 ]
b=0
while [ $b -lt 1 ]
do

read -p "猜猜商品的价格: " i
if [ $i -lt $a ]
then
echo "猜少啦,再猜一次"

elif [ $i -gt $a ]
then
echo "哎又多啦,再来一次:"

elif [ $i -eq $a ]
then
echo " 哎哟不错噢!!答对啦! "

b=2
fi

done

成果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/panrenjun/article/details/111372020