shell脚本之循环语句(for循环与while循环之详解)

shell脚本之循环语句(for循环与while循环之详解)

一、for循环语句

1.1for语句结构

for 循环 指定次数循环 遍历:把集合中每一个元素都读取一遍

语句结构

for 变量名 in 取值列表

do 命令序列

done

mark

1.2for语句示例

1.2.1利用文件中的名称列表批量添加用户,并给每个用户设置密码123123

创建一个名单文件

[root@localhost samba]# vim users.txt

jack
john
kate
lucy

编辑脚本

[root@localhost opt]# vim useradd.sh

#!/bin/bash
list=$(cat /opt/users.text)
for user in $list
do
  useradd $user
  echo "123123"|passwd --stdin $user &> /dev/null  面交互设置密码,
  echo "创建$user成功"
done
~     

验证

[root@localhost opt]# sh useradd.sh
创建john成功
创建lucy成功
创建kateck成功
useradd:用户“john”已存在
创建john成功
创建kate成功
useradd:用户“lucy”已存在
创建lucy成功
1.2.2批量删除上面添加的用户
#!/bin/bash
list=$(cat /opt/users.text)
for user in $list
do
  userdel -r $user
  echo "123123"|passwd --stdin $user &> /dev/null
  echo "删除$user成功"
done 

验证

[root@localhost opt]# sh useradd.sh
删除john成功
删除lucy成功++
删除kateck成功
userdel:用户“john”不存在
删除john成功
删除kate成功
userdel:用户“lucy”不存在
删除lucy成功
1.2.3 根据IP地址批量检查主机状态

检测14.0.0.1 14.0.0.14网段主机 的连通性

#!/bin/bash
for ((i=1;i<=14;i++))
do
        ping -c 3 -i 0.2 -w 3 "14.0.0.$i" &> /dev/null
        if [ $? -eq 0 ]
                then
                echo "host 14.0.0.$i is up"
        else
                echo "host 14.0.0.$i is down"
        fi
done

验证

[root@localhost opt]# sh ipchck.sh
host 14.0.0.1 is down
host 14.0.0.2 is up
host 14.0.0.3 is down
host 14.0.0.4 is down
host 14.0.0.5 is down
host 14.0.0.6 is down
host 14.0.0.7 is down
host 14.0.0.8 is up
host 14.0.0.9 is down
host 14.0.0.10 is up
host 14.0.0.11 is down
host 14.0.0.12 is down
host 14.0.0.13 is down
host 14.0.0.14 is up

二、while循环语句

2.1while语句结构

重复测试某个条件,只要条件成立则反复执行,适用于要求控制循环次数,操作对象按数字编号,按特定条件重复操作等情况。

while 条件测试语句

do

 命令序列

done

mark

2.2while语句示例

2.2.1 批量添加以stu开头以数字进行编号的账户名即stu1、stu2、stu3…stu10,初始密码为123123
#!/bin/bash
i=1
while [ $i -le 10 ]
do 

​        useradd     stu$i
​        echo "123123" | passwd --stdin  stu$i &> /dev/null
​         echo "用户stu$i创建成功"

​          let i++  “let i++”(等同于 i=`expr $i + 1`)
​      
done

验证

[root@localhost opt]# vim stu.sh

[root@localhost opt]# sh stu.sh

用户stu1创建成功

用户stu2创建成功
用户stu3创建成功
用户stu4创建成功
用户stu5创建成功
用户stu6创建成功
用户stu7创建成功
用户stu8创建成功
用户stu9创建成功
用户stu10创建成功
2.2.2检测14.0.0.1 14.0.0.14网段主机 的连通性

true与false是两个特殊的条件,true代表条件为真,条件不成立;false代表条件不成立。

可以利用true来形成while死循环来不停猜价格。

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格范围为 0-999,猜猜看是多少?"
while true
do
  read -p "请输入你猜测的价格数目:" a
  let TIMES++
  if [ $a -eq $PRICE ] ; then
    echo "恭喜你答对了,实际价格是 $PRICE" echo "你总共猜测了 $TIMES 次"
    exit 0
  elif [ $a -gt $PRICE ] ; then
    echo "太高了!"
  else
    echo "太低了!"
  fi
done

验证

[root@localhost ~]# sh test11.sh
商品实际价格范围为 0-999,猜猜看是多少?
请输入你猜测的价格数目:500
太高了!
请输入你猜测的价格数目:300
太低了!
请输入你猜测的价格数目:400
太高了!
请输入你猜测的价格数目:350
太高了!
请输入你猜测的价格数目:325
太低了!
请输入你猜测的价格数目:335
太低了!
请输入你猜测的价格数目:340
太高了!
请输入你猜测的价格数目:338
太高了!
请输入你猜测的价格数目:337
恭喜你答对了,实际价格是 337 echo 你总共猜测了 9 次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值