2018-7-13

20.10 for循環
20.11/20.12 while循環
20.13 break跳出循環
20.14 continue結束本次循環
20.15 exit退出整個腳本



20.10 for循環


for循環**

語法:for 變量名 in 條件; do …; done 

案例

需求:計算1-100所有數字的和

 #!/bin/bash 

sum=0  //賦予初值

for i in `seq 1 100` 

do    

   sum=$[$sum+$i]     

   echo $i 

done 

echo $sum

image.png

文件列表循環

#!/bin/bash

cd /etc/  //先進到目錄下才能ls

for a in `ls /etc/`

do     

if [ -d $a ]     

then       

   ls -d $a     

fi 

done

image.png

注意:for循環以空格和回車作爲分隔符




20.11/20.12 while循環

while循環**

語法 while 條件; do … ; done 

案例:

需求:每個半分鐘,檢查系統負載,當系統負載大於十就發一份郵件

 #!/bin/bash 

while ture

do     

  load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`   //把系統負載賦值到load這個變量裏

   if [ $load -gt 10 ]     

   then        

      top|mail -s "load is high: $load" [email protected]     

   fi     

     sleep 30  //30秒查一次

done 

#!/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

image.png





20.13 break跳出循環/20.14 continue結束本次循環/20.15 exit退出整個腳本


break即爲跳出本次循環,用在循環語句裏

#!/bin/bash

for i in `seq 1 5` 

do

     echo $i

     if [ $i == 3 ]

     then

         break

     fi

     echo $i

 done 

echo aaaaaaa

continue即結束本次循環

忽略continue之下的代碼,直接進行下一次循環

#!/bin/bash

 for i in `seq 1 5`

 do

     echo $i

     if [ $i == 3 ]

     then

         continue

     fi

     echo $i

 done 

echo $i

image.png

對比,break達到目的直接跳出循環,continue結束了本次循環但完成整個循環

exit 直接退出腳本

#!/bin/bash

for i in `seq 1 5` 

do

     echo $i

     if [ $i == 3 ]

     then

         exit

     fi

     echo $i

 done

 echo aaaaaaa

image.png

滿足 條件if [ $i == 3 ] 直接退出腳本,不會執行下面的語句了





擴展

select**

select也是循環的一種,它比較適合用在用戶選擇的情況下。

格式:selet  變量名 in  命令1 命令2 命令3 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章