文章目录
for语句的结构
读取不同的变量值,用来逐个执行同一组命令
示例1
批量添加用户
用户名存放在users。txt文件中,每行一个
初始密码均为123456
验证脚本
[root@localhost ~]# vi /root/users.txt
chen
wen
jian
[root@localhost ~]# vi uaddfor.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
useradd $UNAME
echo "123456" | passwd --stdin $UNAME &> /dev/null
done
[root@localhost ~]# chmod +x uaddfor.sh
[root@localhost ~]# ./uaddfor.sh
[root@localhost ~]# tail -3 /etc/passwd
chen:x:1001:1001::/home/chen:/bin/bash
wen:x:1002:1002::/home/wen:/bin/bash
jian:x:1003:1003::/home/jian:/bin/bash
示例2
根据ip地址检查主机状态
IP地址存放在ipadds.txt文件中,每行一个
使用ping命令检测个主机的连通性
[root@localhost ~]# vi /root/ipadds.txt
20.0.0.1
20.0.0.2
20.0.0.10
20.0.0.21
20.0.0.100
[root@localhost ~]# vi chkhosts.sh
#!/bin/bash
HLIST=$(cat /root/ipadds.txt)
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP &>/dev/null
if [ $? -eq 0 ]
then
echo "Host $IP is up" && echo "Host $IP is up" >>/root/ipup.txt
else
echo "Host $IP is down" && echo "Host $IP is down" >>/root/ipdown.txt
fi
done
[root@localhost ~]# chmod +x chkhosts.sh
[root@localhost ~]# ./chkhosts.sh
Host 20.0.0.1 is up
Host 20.0.0.2 is up
Host 20.0.0.10 is down
Host 20.0.0.21 is up
Host 20.0.0.100 is down
[root@localhost ~]# ll
......
-rw-r--r-- 1 root root 49 Aug 13 09:17 ipadds.txt
-rw-r--r-- 1 root root 196 Aug 13 09:19 ipdown.txt
-rw-r--r-- 1 root root 224 Aug 13 09:19 ipup.txt
......
[root@localhost ~]# cat ipup.txt
Host 20.0.0.1 is up
Host 20.0.0.2 is up
Host 20.0.0.21 is up
[root@localhost ~]# cat ipdown.txt
Host 20.0.0.10 is down
Host 20.0.0.100 is down
while语句的结构
重复测试某个条件,只要条件成立则反复执行