2012-10-25 134 views
3
while [condition] 
do 
    for [condition] 
    do 
    if [ "$x" > 3 ];then 
     break 
    fi 
    done 

    if [ "$x" > 3 ];then 
    continue 
    fi 
done 

在上面的腳本中,我必須測試"$x" > 3兩次。實際上,我第一次測試它,如果它是真的我想逃避while循環並繼續下一個while循環。shell腳本:嵌套循環並繼續

有沒有更簡單的方法,所以我可以使用像continue 2這樣的東西來逃避外層循環?

+2

爲什麼不使用'繼續2'在內部循環? –

+0

標籤和轉到? :) – alex

+0

是否有繼續2? – user1769686

回答

1

「break」和「continue」是「goto」的近親,通常應該避免,因爲它們引入了一些導致程序控制流程出現跳躍的無名條件。如果有條件需要跳轉到程序的其他部分,下一個閱讀它的人會感謝你給這個條件起一個名字,所以他們不必弄明白!

在你的情況,你的腳本可以寫得更簡潔爲:

dataInRange=1 
while [condition -a $dataInRange] 
do 
    for [condition -a $dataInRange] 
    do 
    if [ "$x" > 3 ];then 
     dataInRange=0 
    fi 
    done 
done