Цикл Bash while

Цикл Bash while

Циклы — одна из основополагающих концепций языков программирования. Циклы удобны, когда нужно выполнить последовательность команд несколько раз, пока не будет выполнено определённое условие.

В скриптовых языках, таких как Bash, циклы полезны для автоматизации повторяющихся задач. В скриптах Bash существует три основных конструкции циклов: for , while и until .

В этом руководстве рассматриваются основы циклов while в Bash. Мы также покажем, как использовать операторы break и continue для изменения хода выполнения цикла.

Bash while Цикл

Цикл while используется для выполнения заданного набора команд неизвестное количество раз до тех пор, пока заданное условие остается истинным.

Цикл Bash while имеет следующий вид:

 while [ CONDITION ] do [ COMMANDS ] done

Оператор while начинается с ключевого слова while , за которым следует условное выражение.

Условие проверяется перед выполнением команд. Если условие истинно, команды выполняются. В противном случае, если условие ложно, цикл завершается, и управление программой передаётся следующей команде.

В приведенном ниже примере на каждой итерации текущее значение переменной i выводится и увеличивается на единицу.

 i = 0 while [ $i -le 2 ] do echo Number: $i (( i++ )) done

Цикл Tue повторяется до тех пор, пока i меньше или равно двум. Результат будет следующим:

 Number: 0 Number: 1 Number: 2

Бесконечный цикл while

Бесконечный цикл — это цикл, который повторяется бесконечно и никогда не завершается. Если условие всегда выполняется, цикл бесконечен.

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

 while : do echo "Press  to exit." sleep 1 done

Цикл while , представленный выше, будет выполняться бесконечно. Вы можете прервать его, нажав CTRL+C .

Вот однострочный эквивалент:

 while : ; do echo 'Press  to exit.' ; sleep 1 ; done

Читать файл построчно

Одним из наиболее распространенных применений цикла while является построчное чтение файла, потока данных или переменной.

Вот пример, который считывает файл /etc/passwd построчно и выводит каждую строку:

 file = /etc/passwd while read -r line ; do echo $line done < " $file "

Вместо управления циклом while с помощью условия мы используем перенаправление ввода ( < "$file" ) для передачи файла команде read , которая управляет циклом. Цикл while будет выполняться до тех пор, пока не будет прочитана последняя строка.

При построчном чтении файла всегда используйте read с опцией -r , чтобы предотвратить использование обратной косой черты в качестве экранирующего символа.

По умолчанию команда read обрезает начальные и конечные пробельные символы (пробелы и табуляции). Чтобы предотвратить это, используйте опцию IFS= перед read :

 file = /etc/passwd while IFS = read -r line ; do echo $line done < " $file "

Операторы break и continue

Операторы break и continue можно использовать для управления выполнением цикла while.

break Заявление

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

В следующем примере выполнение цикла будет прервано, как только текущий итерируемый элемент станет равен 2 .

 i = 0 while [ $i -lt 5 ] do echo "Number: $i " (( i++ )) if [[ " $i " == '2' ]] ; then break fi done echo 'All Done!'
 Number: 0 Number: 1 All Done!

continue утверждение

Оператор continue выходит из текущей итерации цикла и передает управление программой следующей итерации цикла.

В следующем примере, как только текущий итерируемый элемент станет равен 2 , оператор continue приведет к возврату выполнения в начало цикла и продолжению следующей итерации.

 i = 0 while [ $i -lt 5 ] do (( i++ )) if [[ " $i " == '2' ]] ; then continue fi echo "Number: $i " done echo 'All Done!'
 Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Заключение

Цикл while многократно выполняет заданный набор команд до тех пор, пока условие остается истинным.

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

терминал цикла bash

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *