Linux Shell程式設計(16)——迴圈

尹成發表於2014-09-30
迴圈就是重複一些命令的程式碼塊,如果條件不滿足就退出迴圈.

for loops


for arg in [list]



這是一個基本的迴圈結構.它與C的for結構有很大不同.
for arg in [list]
do 
   command(s)... 
done




在迴圈的每次執行中,arg將順序的存取list中列出的變數.
for arg in "$var1" "$var2" "$var3" ... "$varN"  
# 在第1次迴圈中, arg = $var1	    
# 在第2次迴圈中, arg = $var2	    
# 在第3次迴圈中, arg = $var3	    
# ...
# 在第N次迴圈中, arg = $varN


# 在[list]中的引數加上雙引號是為了防止單詞被不合理地分割.



list中的引數允許包含萬用字元.

如果do和for想在同一行出現,那麼在它們之間需要新增一個";".
for arg in [list] ; do 

#!/bin/bash
# 列出所有的行星名稱.


for planet in Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Pluto
do
  echo $planet  # 每個行星被單獨列印在一行上.
done


echo
for planet in "Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Pluto"
# 所有的行星名稱列印在同一行上.
# 整個'list'只有一個變數,用""封成一個變數.
do
  echo $planet
done


exit 0



while
這種結構在迴圈的開頭判斷條件是否滿足,如果條件一直滿足,那就一直迴圈下去(0為退出碼[exit status]).與for 迴圈的區別是,這種結構適合用在迴圈次數未知的情況下.


while [condition]
do 
  command... 
done


和for迴圈一樣,如果想把do和條件放到同一行上還是需要一個";".


while [condition] ; do


until
這個結構在迴圈的頂部判斷條件,並且如果條件一直為false那就一直迴圈下去.(與while相反).


until [condition-is-true]
do 
  command... 
done


注意: until迴圈的判斷在迴圈的頂部,這與某些程式語言是不同的.


與for迴圈一樣,如果想把do和條件放在一行裡,就使用";".


until [condition-is-true] ; do

相關文章