語法:for 變量名 in 條件; do …; donehtml
案例1: 需求:計算1-100求和 腳本實現:shell
#!/bin/bash sum=0 for i in `seq 1 100` #設置遍歷條件爲1-100 do sum=$[$sum+$i] echo $i done echo $sum
案例2: 需求:遍歷出指定目錄下的目錄名稱 腳本實現:bash
#!/bin/bash cd /tmp/ #進入目錄這一步很重要 for a in `ls /tmp/` do if [ -d $a ] then ls -d $a fi done
語法:while 條件; do … ; done性能
案例1: 需求:監控腳本,實現每隔30s檢查一次負載,當系統的負載大於10的時候,發一封郵件(監控腳本),最小單元是任務計劃 cron 腳本實現:code
#!/bin/bash while : # 冒號 : 表示死循環的意思,或者1,或者 true都是死循環 do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1` if [ $load -gt 10 ] then /usr/local/sbin/mail.py xxx@qq.com "load high" "$load" fi sleep 30 #休眠30秒,由於檢查系統負載,不須要一直監控,節省性能 done
ps :防止意外終止,能夠打開screen,在screen運行腳本htm
上面腳本腳本用到的知識:字符串
案例2: 需求:須要用戶輸入一個數字;輸入的不是數字,是數字,輸入爲空;迴應相應的結果 腳本實現:get
#!/bin/bash while : do read -p "please input a number:" n if [ -z "$n" ] then echo "you need input sth." continue #結束本次循環,進行下次循環 fi n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "you just only input numbers." continue fi break # 退出循環 done echo $n
break 經常使用於循環語句中,跳出整個循環語句,直接結束全部循環input
腳本示例:it
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] #比較數字,用-eq ;如果比較的是字符串,那須要用 == then break fi echo $i done echo aaaaa
結束本次循環,進行下一次循環
腳本示例:
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then continue fi echo $i done echo aaaaa
執行腳本:3輸出一次跳出,進行了下次循環
[root@yolks3 shell]# sh continue.sh 1 1 2 2 3 4 4 5 5 aaaaa
exit直接結束退出整個腳本,能夠定義退出的數值,能夠用於肯定腳本運行到什麼地方的時候,結束
腳本示例:
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then exit fi echo $i done echo aaaaa
運行:執行到3後面的再也不執行,直接退出腳本
[root@yolks3 shell]# sh exit.sh 1 1 2 2 3