Android

Bash во время цикла

Время и Стекло Так выпала Карта HD VKlipe Net

Время и Стекло Так выпала Карта HD VKlipe Net

Оглавление:

Anonim

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

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

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

Баш в то время как петля

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

Цикл Bash while принимает следующую форму:

while do done

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

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

i=0 while do echo Number: $i ((i++)) done

Цикл повторения повторяется до тех пор, пока i меньше или равен двум. Он выдаст следующий вывод:

Number: 0 Number: 1 Number: 2

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

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

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

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

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

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

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

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

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

В следующем примере цикл while будет построчно читать файл /etc/passwd и печатать каждую строку.

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

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

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

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

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

Перерыв и продолжение заявления

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

Перерыв Заявление

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

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

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

Number: 0 Number: 1 All Done!

Продолжить заявление

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

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

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Вывод

К настоящему времени вы должны хорошо понимать, как использовать bash в цикле.

терминал петли bash