В скриптах Bash есть два типа циклов, которые позволяют выполнять действия до тех пор, пока не будет соблюдено определенное условие — while и until. Основное различие между ними заключается в том, что цикл while выполняется, пока условие истинно, и завершается, когда условие становится ложным. А цикл until работает наоборот: он выполняется, пока условие ложно, и завершается только тогда, когда условие становится истинным.
В этой статье мы покажем семь примеров использования цикла until в скриптах Bash Linux.
Содержание:
- Синтаксис цикла until
- Подсчет чисел с помощью until
- Ожидание создания файла с помощью until
- Проверка доступности сайта
- Бесконечный цикл until
- Использование операторов break и continue с until
- Написание цикла until для арифметической оценки
- Использование цикла until с несколькими условиями
- Выводы
Синтаксис цикла until
Цикл until в сценариях Bash имеет следующий синтаксис:
Где:
[ condition ]— условие, при котором цикл будет продолжать выполнение, пока оно ложно;do— специальное слово, которое обозначает начало блока команд;done— специальное слово, которое обозначает конец блока цикла.
Подсчет чисел с помощью until
Начнем с самого простого — напишем цикл until для подсчета чисел от одного до пяти. Для этого создадим файл basic-loop.sh и вставим в него следующий код:
Этот сценарий Bash инициализирует переменную-счетчик counter со значением 0, с которым она входит в цикл until. Цикл продолжает выполнение до тех пор, пока условие в квадратных скобках [ $counter -gt 5 ] ложно, то есть, пока счетчик не станет больше 5.
Запустим этот скрипт:
Ожидание создания файла с помощью until
Давайте попробуем написать цикл, который будет выводить на экран некое сообщение, пока мы не создадим указанный файл. Для решения этой задачи можно использовать следующий код:
Этот сценарий будет печатать в терминале текст Waiting for the file to be created... с интервалом в одну секунду, пока мы не создадим файл /home/user/qwerty.txt.
Читайте также: Как использовать цикл for в Linux.
Запустим этот скрипт и параллельно создадим нужный файл:
Проверка доступности сайта
Функционал ОС Linux позволяет пользователям применять утилиты командной строки внутри циклов. К примеру, используем команду ping с циклом until, чтобы проверить доступен ли сайт www.google.com:
Данный код будет выводить на экран сообщение Waiting for www.google.com - network down? каждые пять секунд, пока соединение с сайтом www.google.com не будет установлено. В случае успешного соединения, цикл отобразит текст Ping successful! www.google.com is reachable..
Запустим сценарий:
Бесконечный цикл until
Бесконечный цикл — конструкция, в которой набор инструкций или блок кода повторяется бесконечно, без явного условия выхода. Этот цикл будет продолжаться до тех пор, пока его не прервут вручную или не завершат программу. Например:
Поскольку в цикле условие всегда ложно (condition=false), он будет выполняться бесконечно. Убедимся в этом, запустив скрипт:
Читайте также: Использование операторов if, elif, else в скриптах Bash.
Использование операторов break и continue с until
Оператор continue применяется для пропуска указанной итерации цикла. Оператор break прерывает работу цикла. Для примера напишем Bash-скрипт, который должен вывести в терминал числа от 1 до 10, но пропустит число 5 и остановится, когда достигнет числа 8:
Посмотрим, как работает этот сценарий:
Написание цикла until для арифметической оценки
Вы могли заметить, что в предыдущих скриптах мы некоторые условия записывали в двойных круглых скобках. Они используются для арифметической оценки чисел. Давайте попробуем написать программу, которая будет генерировать случайные числа от 1 до 10, пока не выдаст число больше 8:
Проверим, как работает наша программа:
Использование цикла until с несколькими условиями
Напоследок, давайте создадим скрипт, в котором соблюдаются сразу несколько условий. Наша программа должна считать числа от 1 до 10, указывать каждое из них как четное или нечетное, и выводить определенные сообщения, когда счет достигает 5 или 8. И когда цикл доходит до 8, он завершается и печатает сообщение Loop finished!:
Читайте также: 10 полезных советов для написания эффективных bash скриптов в Linux.
Запустим этот код:
Выводы
Мы показали Вам семь полезных примеров использования цикла until в сценариях Bash. Детально изучив показанные скрипты, Вы сможете получить четкое представление о том, как реализовать программу для проверки различных условий.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.





































