2012-01-19 25 views
2

bashのwhile/untilループの現在の反復をただちに終了させる簡単な方法は誰も知っていますが、ループの次の反復まで続行しますか?bash while break while whileループ?

私の基本的な構造は次のとおりです。私は間違いなく、whileループから抜け出すと、何らかの計算条件に、戻ってくることはありませんしたい最初の[[...]]テストで

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 

2番目の[[]]テストでは、サイクルの1回だけ抜けて、それより下のコードは避けてくださいが、次の入力行を読み続けると続行します。

ご覧のとおり、私はdoneを試しましたが、予期しないトークンでエラーが発生しました。

実際には、グローバルと現在のサイクルの両方で、実際にはほとんど終了条件が存在しないので、ループのコードの大部分をifとelseの中にラップしません。

答えて

5

doneの代わりにcontinueを試してください。それはループの次の反復に移動します。

+0

ありがとうございます。私は、マニュアルページで単純なものを見落としていることを知っていました – Marcos