Shell编程之循环语句
学习目标:
掌握for循环语句编程
掌握while循环语句编程
目录结构:
For循环语句
l 读取不同的变量值,以逐个执行同一组命令
l For语句结构
for 变量名 in 取值列表
do
命令序列
done
l for执行原理
for 变量=取值1,do命令序列。取值2,取值3…取值n,分别do。所有取值都执行完之后,done结束循环。
l 根据IP地址检查主机状态
Ip地址存放在ip.txt文件中
每行一个
使用ping命令检测各主机的联通性
l 根据ip地址检查主机状态脚本
[root@poll ~]# vi ip.txt
192.168.0.8 127.0.0.1
192.168.0.9
192.168.0.10
192.168.0.11
[root@poll ~]# vi chkhost.sh
#!/bin/bash
#this is chkhosts
hlist=$(cat /root/ip.txt)
for IP in $hlist
do
ping -c 3 -i 0.2 -W 1 $IP &>/dev/null
if [ $? -eq 0 ] ;then
echo "host $IP is up"
else
echo "host $IP is down"
fi
done
[root@poll ~]# sh chkhost.sh
host 192.168.0.8 is up
host 127.0.0.1 is up
host 192.168.0.9 is down
host 192.168.0.10 is down
host 192.168.0.11 is down
自制累加小脚本从1加到100
[root@poll ~]# seq -s " " 100 >>num.txt
[root@poll ~]# cat num.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
[root@poll ~]# vi add.sh
#!/bin/bash
#description : 1 add 2 add 3 add ... add 100
a=$(cat /root/num.txt)
c=0
for b in $a
do
i=$b
c=$(($i+$c))
done
echo $c
[root@poll ~]# sh add.sh
5050
While循环语句
l 重复测试某个条件,只要条件成立则反复执行
l while 条件测试操作
do
命令序列
done
l while语句执行原理
while条件测试操作,条件成立,do命令序列。继续判断条件,成立就一直执行do命令序列。不成立就done结束循环。
l 批量添加用户
用户以stu开头,按数字顺序进行编号
一共添加20个用户,即stu1,stu2,…,stu20
初始密码均设为123123
实例
[root@poll ~]# vi useadd.sh
#!/bin/bash
#一共添加20个用户,即stu1,stu2,…,stu20
#初始密码均设为123123
perfix=stu
i=1
while [ $i -le 20 ]
do
useradd $perfix$i
echo "123123"|passwd --stdin ${perfix}$1 &>/dev/null
i=$(($i+1))
done