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