bash во время выхода из цикла, а не цикла?

Кто-нибудь знает простой способ немедленно выйти из текущей итерации цикла while / until в bash, но перейти к следующей итерации в цикле?

Моя основная структура:

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 и никогда не возвращаться из-за некоторых расчетных условий.

Во втором [[]] тесте выполняется условие, при котором цикл должен прерваться только один раз, избегая дальнейшего кода под ним, но продолжить чтение следующей строки ввода и позволить while continue.

Как видите, я пробовал done там, но это были только неожиданные ошибки с токеном.

Я бы предпочел не оборачивать большую часть кода цикла внутри if и else, поскольку на самом деле существует довольно много условий завершения, как глобальных, так и только для текущего цикла.


person Marcos    schedule 19.01.2012    source источник


Ответы (1)


Попробуйте continue вместо done. Это приведет вас к следующей итерации цикла.

person chepner    schedule 19.01.2012
comment
ааа спасибо. Я знал, что упускаю из виду что-то простое на странице руководства - person Marcos; 20.01.2012