Bash-скрипты — до цикла
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 выполняется до тех пор, пока условие не вернет ненулевой статус выхода.