Bash-скрипты — до цикла

Опубликовано: 30 Сентября, 2022

Bash имеет три типа циклических конструкций, а именно for, while и until. Цикл «До тех пор» используется для перебора блока команд до тех пор, пока требуемое условие не станет ложным.

Синтаксис:

until [ condition ];
do
 block-of-statements
done

Здесь поток приведенного выше синтаксиса будет —

  • Проверяет состояние.
  • если условие ложно, то выполняет операторы и возвращается к шагу 1.
  • Если условие истинно, то управление программой переходит к следующей команде в сценарии.

Пример:

#!/bin/bash
echo "until loop"
i=10
until [ $i == 1 ]
do
    echo "$i is not equal to 1";
    i=$((i-1))
done
echo "i value is $i"
echo "loop terminated"

Выход:

Бесконечный цикл с использованием пока

В этом примере цикл until бесконечен, т.е. он работает бесконечно. Если условие установлено до тех пор, пока цикл всегда не станет ложным, цикл станет бесконечным.

Программа:

#!/bin/bash
## This is an infinite loop as the condition is set false.
condition=false
iteration_no=0
until $condition
do
    echo "Iteration no : $iteration_no"
    ((iteration_no++))
    sleep 1
done

Выход:

До цикла с перерывом и продолжением

В этом примере операторы break и continue используются для изменения хода цикла.

  • break : этот оператор завершает текущий цикл и передает управление программой следующим командам.
  • continue: этот оператор завершает текущую итерацию цикла, пропуская все оставшиеся ниже команды и начиная следующую итерацию.

Программа

#!/bin/bash
## In this program, the value of count is incremented continuously.
## If the value of count is equal to 25 then, the loop breaks
## If the value of count is a multiple of 5 then, the program 
## control moves to the next iteration without executing
## the following commands.
count=1

# this is an infinite loop
until false
do
    
    if [[ $count -eq 25 ]]
    then
    
        ##   terminates the loop.
        break
    elif [[ $count%5 -eq 0 ]]
    then
    
        ## terminates the current iteration.
        continue
    fi
    echo "$count"
    ((count++))
done

Выход:

До цикла с одним условием

Это пример цикла «до тех пор», который проверяет только одно условие.

Программа

#!/bin/bash
# This program increments the value of 
# i until it is not equal to 5
i=0
until [[ $i -eq 5 ]]
do
    echo "$i"
    ((i++))
done

Выход:

До цикла с несколькими условиями

Пока цикл можно использовать с несколькими условиями. Мы можем использовать оператор and : '&&' и or: '||' оператор для использования нескольких условий.

Программа

#!/bin/bash
##  This program increments the value of 
## n until the sum is less than 20
##   or the value of n is less than 15
n=1
sum=0
until [[ $n -gt 15  || $sum -gt 20 ]]
do
    sum=$(($sum + $n))
    echo "n = $n & sum of first n = $sum"
    ((n++))
done

Выход :

Выход из состояния команды:

Мы знаем, что каждая команда в оболочке возвращает статус выхода. Статус выхода 0 указывает на успешное выполнение, а ненулевое значение указывает на сбой выполнения. Цикл until выполняется до тех пор, пока условие не вернет ненулевой статус выхода.