歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Shell 循環語句用法小結

在寫shell腳本時,常常會用到循環語句。這裡簡單總結下常用的3種循環語句,以便以後能快速地參考寫出【哎,最近腦子不太好使了,在多種語言交叉編程時,常常切換不過來,犯低級錯誤】,廢話不說,開始demo:


1、for 

主要用於:在已知序列裡遍歷元素

[plain]
  1. #! /bin/sh -  
  2.   
  3. if [ $# -ge 1 ]; then  
  4.         path=$@  
  5. else  
  6.         path=*.sh  
  7. fi  
  8.   
  9. for i in $path  
  10. do  
  11.         ls -lh $i  
  12. done  

注意:for循環的in列表時可選的,如果省略,shell會遍歷整個命令行參數,此時  for i  相當於 for i in "$@"


再給一個for的用法示例:

[plain]
  1. #! /bin/sh -  
  2.   
  3. for i in `seq 1 9`  
  4. do  
  5.         echo $i  
  6. done  

注意:for in 可以和 `` 與 $() 合用,上面的for i in `seq 1 9`  也等價與 for i in $(seq 1 9)

再給一個for的用法示例:

[plain]
  1. #! /bin/sh -  
  2.   
  3. for i in {a..z}  
  4. do  
  5.         echo $i  
  6. done  
注意:for in 的大括號{}具有自動補齊功能,大括號與要補齊的內容之間不能有空格,要補齊的內容首尾由兩個..相連,其間不能有空格

再給個for的用法示例:

[plain]
  1. #! /bin/sh -  
  2.   
  3. for (( i=1; i<=10; i++ ))  
  4. do  
  5.         echo $i  
  6. done  
提醒:這個主要是用了(())


2、while 

主要用於:當某條件成立時,一直執行


[plain]
  1. #! /bin/sh -  
  2.   
  3. cnt=9  
  4.   
  5. while [ $cnt -ge  0 ]  
  6. do  
  7.    echo  $((cnt--))  
  8. done  

  注意:1、算術運算,需要放在$(()) 的括號中

      2、對於變量的算術運算,在$(())中,變量前面不需要$


3、unitl

主要用於:當某條件成立時,停止執行


[plain]
  1. #! /bin/sh -  
  2.   
  3. cnt=9  
  4. until [ $cnt -lt 0 ]  
  5. do  
  6.         echo $cnt  
  7.         cnt=$((cnt - 1))  
  8. done  

       注意:給變量賦值時,前面不要加$


      判斷語句,可以參考 Shell case語句用法小結 (見 http://www.linuxidc.com/Linux/2012-02/54385.htm )與 Shell if語句用法小結 (見 http://www.linuxidc.com/Linux/2012-02/54343.htm )

Copyright © Linux教程網 All Rights Reserved