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

bash 腳本編程六 循環,遍歷目錄

現在看看循環的寫法:

  1. for v in ...  
  2. do   
  3. ...  
  4. done  
寫個簡單的例子看一下:
  1. #!/bin/bash  
  2. for v in man woman child  
  3. do  
  4.     echo $v  
  5. done  
輸出結果為:
  1. $ ./test.sh  
  2. man  
  3. woman  
  4. child  
for in的寫法和很多現代語言相近。

就是...可以用 空格隔開的若干個值表示


再進一步,打開一個目錄,遍歷其中的文件(不遞歸)

[plain] view plaincopyprint?
  1. #!/bin/bash  
  2. cd ~/Downloads  
  3. for f in *.jpg  
  4. do  
  5.     echo $f  
  6. done  
運行結果:
  1.  ./test.sh  
  2. 08_avatar_middle.jpg  
  3. 84e_4ffbfce3_9ab8_d9c2_b577_acbfc7edbfc2_1.jpg  
  4. DSCN0743.jpg  
  5. IMAG0611.jpg  
  6. IMG_20120423_135302 (1).jpg  
  7. IMG_20120423_135302.jpg  
  8. IMG_20120423_144215 (1).jpg  
  9. IMG_20120423_144215.jpg  
  10. psb.jpg  
  11. ssh2-300x259.jpg  
這是一個很簡單的遍歷當前目錄的文件的方法。

如果加上目錄路徑也行。不一定非要切換當前目錄。

下面這個例子添加了檢測目錄是否存在的邏輯:

  1. #!/bin/bash  
  2. if [ -d ~/Downloads ]  
  3. then  
  4.     echo '~/Downloads folder exists'  
  5. else  
  6.     echo "~/Downloads folder doesn't exist"  
  7.     exit  
  8. fi  
  9.   
  10. for f in ~/Downloads/*.jpg  
  11. do  
  12.     echo $f  
  13. done  
~ 可以用 $HOME來替代。

注意,如果要防止換行,可以用雙引號去掉裡面包含的換行符。

  1. #!/bin/bash  
  2. if [ -d $HOME/Downloads ]  
  3. then  
  4.     echo '~/Downloads folder exists'  
  5. else  
  6.     echo "~/Downloads folder doesn't exist"  
  7.     exit  
  8. fi  
  9.   
  10. for f in "$HOME/Downloads/*.jpg"  
  11. do  
  12.     echo $f  
  13. done  

注意f in 後面 多了雙引號。顯示的結果就變了:

  1.  ./test.sh  
  2. ~/Downloads folder exists  
  3. /home/chenshu/Downloads/08_avatar_middle.jpg /home/chenshu/Downloads/84e_4ffbfce3_9ab8_d9c2_b577_acbfc7edbfc2_1.jpg /home/chenshu/Downloads/DSCN0743.jpg /home/chenshu/Downloads/IMAG0611.jpg /home/chenshu/Downloads/IMG_20120423_135302 (1).jpg /home/chenshu/Downloads/IMG_20120423_135302.jpg /home/chenshu/Downloads/IMG_20120423_144215 (1).jpg /home/chenshu/Downloads/IMG_20120423_144215.jpg /home/chenshu/Downloads/psb.jpg /home/chenshu/Downloads/ssh2-300x259.jpg  

如果想要一個變量遞增,可以這樣寫:

  1. #!/bin/bash  
  2. i=0  
  3. while [ $i -lt 5 ]  
  4. do  
  5.     echo $i  
  6.     let i++  
  7. done  
這裡用了while循環,顯示結果:
  1. $ ./test.sh  
  2. 0  
  3. 1  
  4. 2  
  5. 3  
  6. 4  
Copyright © Linux教程網 All Rights Reserved