for循環結構是平常運維工做中用的很頻繁的循環結構。python
for 變量名 in 循環條件; do command done
這裏的「循環條件」能夠是一組字符串揮着數字(用空格隔開),也能夠是一條命令的執行結果。linux
[root@zlinux-01 shell]# vim for01.sh #! /bin/bash sum=0 for i in `seq 1 5` do echo $i sum=$[$sum+$i] done echo $sum [root@zlinux-01 shell]# sh for01.sh 1 2 3 4 5 15
/etc/
目錄下包含單詞yum
的目錄。[root@zlinux-01 shell]# vim for2.sh #! /bin/bash cd /etc/ for i in `ls /etc/`; do if [ -d $i ]; then ls -ld $i | grep -w 'yum' fi done [root@zlinux-01 shell]# sh for2.sh drwxr-xr-x. 6 root root 100 3月 16 04:04 yum drwxr-xr-x. 2 root root 248 4月 12 14:53 yum.repos.d
while 條件; do command done
# 冒號代替條件 while : ; do command sleep 30 done
[root@zlinux-01 shell]# vim while01.sh #!/bin/bash while : do load=`w|head -1 |awk -F 'load average: ' '{print $2}'| cut -d . -f1` if [ $load -eq 0 ] then python /usr/lib/zabbix/alertscripts/mail.py zxc00@126.com "load is high:$load" "$load" fi sleep 30 done ##python行表示使用郵件腳本發送負載情況,這裏爲了實驗,把load設爲等於0,mail.py腳本在以前zabbix實驗中設置 #'while :'表示死循環,也能夠寫成while true,意思是「真」 #Attention:awk -F 'load average: '此處指定'load average: '爲分隔符,注意冒號後面的空格 #若是不加該空格,過濾出來的結果會帶空格,須要在此將空格過濾掉
實驗結果:
說明:若是不手動中止該腳本,它會一直循環執行(按Ctrl+c結束),實際環境中配合screen使用。shell
[root@zlinux-01 shell]# vim while02.sh #!/bin/bash while true do read -p "Please input a number:" n if [ -z "$n" ] then echo "You need input some characters!" continue fi n1=`echo $n|sed 's/[-0-9]//g'` if [ -n "$n1" ] then echo "The character must be a number!" continue fi break done echo $n #continue:中斷本次while循環後從新開始; #break:表示跳出本層循環,即該while循環結束
break跳出循環
continue結束本次循環
exit退出整個腳本vim
[root@zlinux-01 shell]# vim break.sh #!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then break #此處課替換continue和exit,執行腳本查看區別 fi echo $i done echo $i