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.

Шпаргалка

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

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

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

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

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

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