shell腳本中的循環(for循環,while循環)及break、continue的用法示例


Shell腳本中也算是一門簡易的編程語言了,當然循環是不能缺少的。常用到的循環有for循環和while循環。下面就分別介紹一下兩種循環的結構。

【for循環】:

Shell腳本中的for循環示例:

#! /bin/bash
## author:Xiong Xuehao
## Use for in this script.
for i in `seq 1 5`; do
  echo $i
done

腳本中的seq 1 5 表示從1到5的一個序列。你可以直接運行這個命令試下。腳本執行結果為:

  通過這個腳本就可以看到for循環的基本結構:

for 變量名 in 循環的條件; do

command

done

 循環的條件那一部分也可以寫成這樣的形式,中間用空格隔開即可。你也可以試試,for i in `ls`; do echo $i; done for i in `cat test.txt`; do echo $i; done

 

【while循環】:

再來看看這個while循環,基本格式為:

while 條件; do

command

done

#! /bin/bash
## author:Xiong Xuehao
## Use while in this script.

a=10
while [ $a -ge 1 ];do
  echo $a
  a=$[$a-1]
done

腳本的執行結果為:

 另外你可以把循環條件忽略掉,筆者常常這樣寫監控腳本。

while :; do

command

done

示例:

#! /bin/bash
## author:Xiong Xuehao
## Monitoring alarm.

while : 
do
    load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
    if [ $load -gt 10 ]
    then
        /usr/local/sbin/mail.py xxxxxxxxxx@qq.com "load high" "$load"
    fi
    sleep 30
done

Shell腳本(for循環,while循環里面使用 break跳出循環,continue結束本次循環)

     在看腳本之前,我們需要知道continue和break的意思:
continue是繼續的意思,也就是當運行結果不滿足條件時,在從頭循環一遍。(通俗理解是:跳過本次循環剩余部分,直接開始下一輪循環)
break是跳出循環的意思。(通俗理解是退出整個循環)。

注意break、continue僅在`for', `while', 或者`until' 循環中有意義。

      下面先來看for循環中使用break的例子:有5個人參加搶答游戲,但是只有3個名額剩余的都淘汰。從1,2,3,4,5報數,數到3時結束。

#! /bin/bash
## author:Xiong Xuehao
## 循環語句里面的continue和break.

for i in `seq 1 5`; do
  echo -n "$i"
  if [ $i -ge 3 ]; then
    echo "名額滿了,剩下的都離開吧"
    break
  else
    echo "繼續"
  fi
done

如圖:

  

      下面來看for循環中使用continue的例子:有5個人參加搶答游戲,前兩名2個名額,遲到的都罰站。從1,2,3,4,5報數,從第3名開始及以后的都罰站。

#! /bin/bash
## author:Xiong Xuehao
## 循環語句里面的continue和break.

for i in `seq 1 5`; do
  echo -n "$i"
  if [ $i -ge 3 ]; then
    echo "遲到了,罰站"
    continue
  else
    echo "繼續"
  fi
done

如圖:

 

  上面兩個例子注意看區別哦。

 

再看一個for循環的腳本,將break個continue結合起來使用的例子:

要求輸入一個數字,如果輸入內容不是數字返回一個字符串提醒,如果輸入為空也返回一個字符串提醒,如果是輸入數字則將該數字顯示出來。

#! /bin/bash
## author:Xiong Xuehao
## 循環語句里面的continue和break.

while :
do
    read -p "please input a number: " n
    if [ -z "$n" ]
    then
       echo "提醒,你需要輸入內容."
       continue
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ ! -z "$n1" ]
    then
       echo "輸入錯誤,你只能輸入一個純數字."
       continue
    fi
    break
done
echo $n

執行如圖:

 【完】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM