for 循环语句的使用

在实际工作环境中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令完全相同。如:根据服务器清单检查各个主机的存活状态;根据ip地址黑名单设置拒绝访问的防火墙策略等。

这样繁琐的重复任务时,if语句已经不能满足需求。则我们需要for循环语句。

For语句的结构

使用for循环时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。在这里,“取值列表”称为for语句的执行条件,其中包括多个属性相同的对象,需要预先指定(如上面提到的ip黑名单)。

for  变量名  in  取值列表

do

      命令序列

done

for语句的操作对象为用户指定的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间以空格进行分隔。位于do。。。。。done之间的命令序列称为“循环体”,其中的执行语句需要引用变量以完成相对的任务。

For语句的执行流程:首先将列表中的第一个取值赋予给变量,并执行do。。。。done循环体中的命令序列。然后将列表中的第二个取值赋值给变量,并执行循环体中的命令序列。。。。。。依次类推,直到列表中的所有取值用完,然后将跳至done语句,表示循环结束。

 

事例1:

根据姓名列表批量添加用户:根据员工列表,在Linux服务器中添加相应的用户账号。初始密码为123456.

# vi adduser.sh

#!/bin/bash

ULIST=$(cat /root/users.txt)

for UNAME in $ULIST

do

        useradd $UNAME

        echo "123456" | passwd --stdin $UNAME &>/dev/null

done

脚本中的users.txt为员工姓名列表。(自定义,随便写一些用户名称即可)

执行之后验证一下:

# chmod +x adduser.sh

# ./adduser.sh

# tail -10 /etc/passwd

 

练习:请将上文脚本新建的用户删除掉。使用for循环。

事例2:

根据ip地址列表监测主机状态:根据公司服务器ip地址列表文件,监测各个主机ping的联通性,输出各个主机是否启动、关闭。这其中服务器数量并不固定,IP地址之间也无特殊规律。

# vi ipfor.sh

#!/bin/bash

HLIST=$(cat /root/iplist.txt)

for IP in $HLIST

do

        ping -c 3 $IP &> /dev/null

        if [ $? -eq 0 ]

        then

                echo "host $IP is up"

        else   

                echo "host $IP is down"

        fi

done

脚本中的iplist是ip地址文件。

 

事例3:批量添加用户

#!/bin/bash

#本脚本用来批量创建系统用户

echo '成功创建用户:' > /root/user_name

read -ep '请输入要创建的用户数量:' num

for i in `seq 1 $num`

do

    grep "user-$i" /etc/passwd > /dev/null 2>&1

    if [ $? -ne 0 ]; then

   useradd user-$i > /dev/null 2>&1

   if [ $? -eq 0 ]; then

        echo "user-$i" >> /root/user_name

        echo "user-$i"| passwd user-$i --stdin > /dev/null 2>&1

        echo "user-$i 创建成功!"

   fi

    else

        echo "user-$i 用户已存在,创建失败!"

    fi

done

cat /root/user_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值