Как выйти из цикла в Bash?
Я хочу написать Bash script для обработки текста, для чего может потребоваться цикл while.
Например, цикл while в C:
int done = 0;
while(1) {
...
if(done) break;
}
Я хочу записать эквивалент Bash script. Но то, что я обычно использовал, и как показали все классические примеры, которые я прочитал, заключается в следующем:
while read something;
do
...
done
Он не дает никакой информации о том, как сделать while(1){}
и break;
, который хорошо определен и широко используется в C, и мне не нужно читать данные для stdin.
Может ли кто-нибудь помочь мне с эквивалентом Bash вышеуказанного C-кода?
Ответы
Ответ 1
Это не то, что отличается от bash
.
done=0
while : ; do
...
if [ "$done" -ne 0 ]; then
break
fi
done
:
- команда no-op; его статус выхода всегда равен 0, поэтому цикл работает до тех пор, пока done
не получит ненулевое значение.
Существует множество способов установить и проверить значение done
, чтобы выйти из цикла; тот, который я покажу выше, должен работать в любой совместимой с POSIX оболочке.
Ответ 2
while true ; do
...
if [ something ]; then
break
fi
done