•語法:for 變量名 in 條件; do …; doneshell
示例
計算1到100全部數字的和bash
#!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum
列出etc目錄下的全部目錄ide
#!/bin/bash cd /etc/ for a in `ls /etc/` do if [ -d $a ] then echo $a ls $a fi done
語法 while 條件; do … ; donecode
示例
每隔30秒檢查系統的負載,若是大於10則發一封郵件input
#!/bin/bash while true do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1` if [ $load -gt 10 ] then /root/shell/mail.py m1796686653@qq.com "load high" "$load" fi sleep 30 done
while true 判斷是否爲真,這樣能夠寫一個死循環的腳本it
w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1
w是系統負載的命令
head -1 取命令結果的第一行
|awk -F 'load average: ' '{print $2} 指定分隔符爲load average,取第二段
cut -d. -f1 指定分隔符爲 「 . 」,取第1段for循環
if [ $load -gt -1 ] 判斷load是否大於10,若是大於10那麼執行下面的語句,這是一個發郵件的腳本class
sleep 30 執行後休眠30秒再執行awk
讓用戶輸入一個數字,直到正確爲止變量
#!/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跳出循環
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then break fi echo $i done echo ok
腳本運行結果
[root@yang shell]# sh br.sh 1 1 2 2 3 ok
continue結束本次循環
!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then continue fi echo $i done echo ok
腳本運行結果
[root@yang shell]# sh co.sh 1 1 2 2 3 4 4 5 5 ok
exit退出腳本
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i -eq 3 ] then exit fi echo $i done echo ok
腳本運行結果
[root@yang shell]# sh ex.sh 1 1 2 2 3