Бесконечный цикл - это не что иное, как последовательность инструкций, которая зацикливается бесконечно, либо из-за того, что цикл не имеет завершающего условия, либо имеет условие, которое никогда не может быть выполнено, либо такое, которое заставляет цикл начать сначала.
Синтаксис цикла while выглядит следующим образом:
1 2 3 4 5 6 | #!/bin/bash while : do echo "Нажмите [CTRL+C] для остановки..." sleep 1 done |
Это цикл, который будет вечно печатать "Нажмите [CTRL+C] для остановки...". Обратите внимание, что : - это команда null. Команда null ничего не делает, и ее статус выхода всегда равен true. Чтобы улучшить читаемость, можно изменить вышеприведенный вариант следующим образом:
1 2 3 4 5 6 7 | #!/bin/bash while true do echo "Нажмите [CTRL+C] для остановки..." sleep 1 done /* Ваш код... */ |
Примеры бесконечных циклов Bash в CLI
Синтаксис однострочного бесконечного цикла while в bash выглядит следующим образом:
1 | while :; do echo 'Нажать CTRL+C'; sleep 1; done |
ИЛИ
1 | while true; do echo 'Нажать CTRL+C'; sleep 1; done |
Bash для примера бесконечного цикла
Вот еще один пример:
1 2 3 4 5 6 | #!/bin/bash for (( ; ; )) do echo "Нажмите CTRL+C для остановки..." sleep 1 done |
Как выйти из цикла While?
Цикл for или while можно обойти с помощью оператора break при выполнении определенного условия:
1 2 3 4 5 6 7 8 9 10 | ### пример цикла for ### for (( ; ; )) do echo "Нажмите CTRL+C, чтобы остановить..." sleep 1 if (условие-выхода) then break #Выйти из цикла. fi done |
ИЛИ
1 2 3 4 5 6 7 8 9 10 | ### пример цикла while ### while do echo "Нажмите CTRL+C для остановки..." sleep 1 if (условие-выхода) then break #Выйти из цикла. fi done |
Использование оператора case для выхода из бесконечного цикла while в bash
Вы также можете использовать оператор case для выхода из цикла с помощью оператора break:
1 2 3 4 5 6 7 8 9 | while do ### добавьте сюда некоторые входные и выходные данные ### case $var in yes) do something ;; no) do something ;; quit) break ;; ##Отменить цикл. ease done |