shell編程——循環執行


我們知道程序無非三種執行方式——順序、條件、循環。順序就是一條一條的執行,是一馬平川;條件就是個十字路口,根據條件決定自己的走向;循環就是笨驢拉磨,一圈一圈的走,知道達到條件終止。現在集中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

 

 

 


免責聲明!

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



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