Баш, а вырваться из цикла не цикл? - PullRequest
2 голосов
/ 20 января 2012

Кто-нибудь знает простой способ немедленно выйти из текущей итерации цикла while / till в 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 и никогда не возвращаться из-за некоторых вычисленных условий.

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

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

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

1 Ответ

5 голосов
/ 20 января 2012

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

...