2018-4-19 17周2次課 for循環、while循環、break、continue、exit
阿新 • • 發佈:2018-04-20
shell20.10 for循環
·語法:for 變量名 in 條件; do …; done
案例1
計算1到100數字的和
#!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] ##核心語句 echo $i done echo $sum
案例2
列出/etc/下的目錄或子目錄
#!/bin/bash cd /etc/ for a in `ls /etc/` do if [ -d $a ] then ls -d $a fi done
ls 是用空格或回車作為分隔符,for循環以他對象,那麽可能會出錯
20.11/20.12 while循環
·語法 while 條件; do … ; done
案例1
#!/bin/bash while : ## : 表示死循環 或者寫成 while true do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1` if [ $load -gt 10 ] then top|mail -s "load is high: $load" [email protected] ##或/usr/local/sbin/mail.py [email protected] "load high" "$load" fi sleep 30 done
案例2
#!/bin/bash while : do read -p "Please input a number: " n if [ -z "$n" ] then echo "you need input sth." continue ## continue 指繼續重新再來一遍循環 fi n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "you just only input numbers." continue ## continue 從頭繼續重新再來一遍循環 fi break ##退出 while 循環 done echo $n
20.13 break跳出循環
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] ##正常等於號應該寫為 -eq,字符串等於為 == then break fi echo $i done echo aaaaaaa
[root@localhost shell]# sh -x break.sh ++ seq 1 5 + for i in '`seq 1 5`' + echo 1 1 + '[' 1 == 3 ']' + echo 1 1 + for i in '`seq 1 5`' + echo 2 2 + '[' 2 == 3 ']' + echo 2 2 + for i in '`seq 1 5`' + echo 3 3 + '[' 3 == 3 ']' + break + echo aaaaaaa aaaaaaa
原本在 i 為 3 之前,腳本一直執行到done,然後在從頭循環,而 為 3 時,之間break跳出循環,
echo aaaaaaa
·break 用在循環語句裏,for 也行,while 也行
20.14 continue結束本次循環
·忽略continue之下的代碼,直接進行下一次循環
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] then continue fi echo $i done echo $i
[root@localhost shell]# sh -x continue.sh ++ seq 1 5 + for i in '`seq 1 5`' + echo 1 1 + '[' 1 == 3 ']' + echo 1 1 + for i in '`seq 1 5`' + echo 2 2 + '[' 2 == 3 ']' + echo 2 2 + for i in '`seq 1 5`' + echo 3 3 + '[' 3 == 3 ']' ## 等於3時,直接結束了本次循環,從頭開始 + continue + for i in '`seq 1 5`' + echo 4 4 + '[' 4 == 3 ']' + echo 4 4 + for i in '`seq 1 5`' + echo 5 5 + '[' 5 == 3 ']' + echo 5 5 + echo aaaaaaa aaaaaaa
·break會跳出循環,不再執行循環,而continue會結束本次循環,從頭開始執行循環
20.15 exit退出整個腳本
exit直接退出腳本:
#!/bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] then exit fi echo $i done echo aaaaa
[root@localhost shell]# sh -x exit.sh ++ seq 1 5 + for i in '`seq 1 5`' + echo 1 1 + '[' 1 == 3 ']' + echo 1 1 + for i in '`seq 1 5`' + echo 2 2 + '[' 2 == 3 ']' + echo 2 2 + for i in '`seq 1 5`' + echo 3 3 + '[' 3 == 3 ']' + exit
2018-4-19 17周2次課 for循環、while循環、break、continue、exit