2012-01-19 61 views
2

任何人都知道一種簡單的方法來立即退出bash中的while/until循環的當前迭代,但繼續循環中的下一次迭代?bash while break out of cycle not loop?

我的基本結構是:

sort -u -r -g -k 5 -t ' ' $filteredtoptrigsf |\ 
while read -a linA; do 

stuff 
morestuff 

[[ $smthStinks -eq 1 ]] && break 

[[ ${linA[*]} == $onlyThisLineStinks ]] && done 

lotsaSlowProcessing 

doSmthDangerous 

done 

在第[...]]測試我肯定要跳出while循環,永不回來,由於一些計算條件。

在第二個[[]]測試中,遇到一個條件,應該只跳出一次循環,避免下面的代碼,但繼續讀取下一行輸入並繼續。

正如你所看到的,我嘗試了done那裏,但只有令牌意外的錯誤。

我寧願不把大部分循環的代碼包含在if和else中,因爲實際上只有很少的終止條件,只有全局和當前循環。

回答

5

嘗試continue而不是done。這將帶您進入循環的下一次迭代。

+0

ahh謝謝。我知道我在man page中忽略了一些簡單的東西 – Marcos