Цикл While в Bash. Как выполнять итерации пока соблюдается условие?

цикл while в bash. как выполнять итерации пока соблюдается условие?

Базовое использование цикла while

Принцип работы while очень прост. Он, как и условный оператор if, принимает на входе выражение, результат которого преобразуется в логическое значение. Если выражение является истинным, то цикл while продолжает выполнять заданный блок команд. Команды будут обрабатываться, пока выражение не станет ложным.

Bash позволяет использовать для цикла while те же самые проверки и выражения, что и в условном операторе if. Эти инструменты уже были подробно рассмотрены в предыдущих уроках. Для ознакомления перейдите по ссылке в начале статьи.

Посмотрите на пример Bash-скрипта, приведенный ниже. В нем рассматривается стандартный механизм использования цикла while. Сразу за ним приводится общее описание синтаксиса. Также обратите внимание, что цикл может обрабатывать как условие, так и промежуточные результаты выполнения других команд. Это отчетливо видно при выводе файлов, хранящихся в директории пользователя.

#!/bin/bash
#выполняем пока счетчик ниже порогового значения
counter=0

while [[ $counter -le 20 ]]
do
    echo $counter
    (( counter++ ))
done


#если файл существует выполняем ещё 10 проверок
#затем удаляем его
filename='/tmp/test.txt'
checks=0

touch $filename
while [[ -f $filename ]]
do
    if [[ checks -lt 10 ]]
    then
        echo "Файл существует. Проверка #$[${checks} + 1 ]"
        (( checks++ ))
    else
        rm $filename
    fi
done


#перебираем результат команды (используя каналы)
ls ~/ | while read file
do
    echo $file
done

Правила составления цикла while:

  1. Конструкция начинается с ключевого слова while, за которым располагается выражение, требующее проверки.
  2. Блок команд, выполняемый, пока истинно выражение, задается между ключевыми словами do и done. Где do — начало, а done — конец.
  3. Если ключевое слово do располагается на одной строке с выражением, перед ним должна находиться точка с запятой.

Заметка
Как правило, выражения оперируют несколькими значениями, изменяемых в блоке команд. Если внутри Bash-скрипта задать циклу while условие, параметры которого не изменяются при выполнении, он будет работать бесконечно.

Последние публикации