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. Если это так, он выполняет тело цикла, увеличивает значение counter с помощью $((...)) для выполнения арифметических операций и проверяет условие снова.

Как только count достигает 6, условие становится ложным, и цикл останавливается.

Циклы while идеально подходят, когда вы заранее не знаете, сколько итераций вам потребуется. Например, вы можете продолжать запрашивать input, пока пользователь не введёт "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 для сравнения «меньше или равно». Не забудь увеличивать значение counter внутри цикла с помощью num=$((num + 1)), чтобы избежать бесконечного цикла. Заверши цикл while с помощью done.

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

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

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

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

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