Menu
Coddy logo textTech

Цикл 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. Если условие никогда не становится ложным, ваш цикл выполняется бесконечно.

Всегда убедитесь, что внутри цикла что-то в конечном итоге изменяет условие, например, увеличение счётчика или обновление переменной на основе ввода пользователя.

challenge icon

Задание

Легко

Создайте shell-скрипт с именем counter.sh, который использует цикл while для вывода чисел от 1 до 4.

Ваш скрипт должен:

  1. Начинаться со строки shebang (#!/bin/bash)
  2. Создать переменную с именем num с начальным значением 1
  3. Использовать цикл while, который продолжается, пока num меньше или равно 4
  4. Внутри цикла вывести текущее число в формате: Number: [num]
  5. Увеличить num на 1 после каждой итерации с помощью $((num + 1))

Сделайте скрипт исполняемым и запустите его. Ваш вывод должен быть:

Number: 1
Number: 2
Number: 3
Number: 4

Подсказка: Используйте -le для сравнения «меньше или равно». Не забудьте увеличить счетчик внутри цикла с помощью num=$((num + 1)), чтобы избежать бесконечного цикла. Завершите цикл while словом done.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Terminal