Цикл while
Часть раздела Основы путешествия по Terminal на Coddy — урок 72 из 82.
Цикл for отлично подходит, когда вы точно знаете, какие элементы нужно перебрать. Но что, если вы хотите продолжать цикл, пока не изменится определённое условие? Вот здесь и пригодится цикл while.
Цикл while продолжает выполняться, пока его условие остается истинным. Вот базовая структура:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneЭтот скрипт выводит числа от 1 до 5.
Цикл проверяет, меньше ли count или равно 5. Если да, выполняет тело, увеличивает счётчик с помощью $((...)) для арифметики и проверяет снова.
Как только count достигает 6, условие становится ложным и цикл останавливается.
Циклы while идеальны, когда вы заранее не знаете, сколько итераций потребуется. Например, вы можете продолжать запрашивать ввод, пока пользователь не введет "quit":
#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
read -p "Enter command (quit to exit): " input
echo "You entered: $input"
doneБудьте осторожны с циклами while. Если условие никогда не становится ложным, ваш цикл выполняется бесконечно.
Всегда убедитесь, что внутри цикла что-то в конечном итоге изменяет условие, например, увеличение счётчика или обновление переменной на основе ввода пользователя.
Задание
ЛегкоСоздайте shell-скрипт с именем counter.sh, который использует цикл while для вывода чисел от 1 до 4.
Ваш скрипт должен:
- Начинаться со строки shebang (
#!/bin/bash) - Создать переменную с именем
numс начальным значением1 - Использовать цикл while, который продолжается, пока
numменьше или равно 4 - Внутри цикла вывести текущее число в формате:
Number: [num] - Увеличить
numна 1 после каждой итерации с помощью$((num + 1))
Сделайте скрипт исполняемым и запустите его. Ваш вывод должен быть:
Number: 1
Number: 2
Number: 3
Number: 4Подсказка: Используйте
-leдля сравнения «меньше или равно». Не забудьте увеличить счетчик внутри цикла с помощьюnum=$((num + 1)), чтобы избежать бесконечного цикла. Завершите цикл while словомdone.
Шпаргалка
Цикл while продолжает выполняться, пока его условие остается истинным:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneЦикл проверяет условие перед каждой итерацией. Используйте $((...)) для арифметических операций, чтобы инкрементировать счетчики.
Циклы while полезны, когда вы заранее не знаете, сколько итераций потребуется, например, при ожидании конкретного ввода пользователя:
#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
read -p "Enter command (quit to exit): " input
echo "You entered: $input"
doneВсегда убедитесь, что что-то внутри цикла в конечном итоге изменяет условие, чтобы избежать бесконечных циклов.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога13Основы скриптинга оболочки
Что такое скрипт оболочкиСоздание и запуск скриптаПеременные в скриптахПользовательский ввод в скриптахОператор ifЦикл forЦикл whileИтог - Угадай число2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данных