我們知道程序無非三種執行方式——順序、條件、循環。順序就是一條一條的執行,是一馬平川;條件就是個十字路口,根據條件決定自己的走向;循環就是笨驢拉磨,一圈一圈的走,知道達到條件終止。現在集中shell中的循環執行。
存在兩個模式:
- while do done、 until do done
- for do done
while do done、 until do done模式
基本語法:
##while do done 不滿足條件時會終止循環 while [ 條件表達式 ] do 條件滿足時可執行的命令 done ##until do done 滿足條件是會終止循環 until [ 條件表達式 ] do 條件不滿足時可執行的命令 done
例子:求1--100之和
#!bin/bash sum=0 i=1 while [ "$i" -le "100" ] do sum=$(($sum + $i)) i=$(($i+1)) done echo "sum(1-100):" $sum
#!bin/bash sum=0 i=1 until [ "$i" == "101" ] do sum=$(($sum + $i)) i=$(($i + 1)) done echo "sum(1-100):" $sum
這里特別強調一下算式最好用這個模式: var=$(($var + 1))
for do done 模式
for((初始值; 條件; 執行步長)) do 程序段 done
例子:還是1--100之和
#!bin/bash for((i=1; i<=100; i++)) do sum=$(($sum + $i)) i=$(($i + 1)) done echo "sum(1--100):" $sum
注意細節:for((初始值; 條件; 執行步長))里面的預壓和c語言一樣了,但是一點不同雙括號。
更高級點的模式:
for var in con1 con2 con3 do 程序段 done
例子:列舉出目錄下的所有文件名
#!bin/bash read -p "Please enter the dir name:" dirname list=`ls $dirname` for file in $list do echo $file done
注意細節:list=`ls $dirname`,其中的引號不是單引號,是鍵盤1左邊的點號(波浪線下面),它可以使程序執行時優先執行。上面的程序還可以精簡為:
#!bin/bash read -p "Please enter the dir name:" dirname for file in `ls $dirname` do echo $file done