Menu
CoddyTech

Цикл 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