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