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