Подтвердить что ты не робот

Как выйти из цикла в 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-кода?

4b9b3361

Ответ 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