Циклы — одна из фундаментальных концепций языков программирования. Циклы удобны, когда вы хотите запускать серию команд снова и снова, пока не будет выполнено определенное условие.
В языках сценариев, таких как Bash, циклы полезны для автоматизации повторяющихся задач. Там нет 3 основных конструкций петли в Bash сценариев, for
цикла , в while
цикла , и until
цикла.
В этом руководстве объясняются основы цикла until
в Bash.
Bash until
Loop
Цикл « until
используется для выполнения заданного набора команд до тех пор, пока данное условие оценивается как ложное.
Цикл Bash until
принимает следующую форму:
until [CONDITION]
do
[COMMANDS]
done
Условие оценивается перед выполнением команд. Если условие оценивается как ложное, команды выполняются. В противном случае, если условие оценивается как истинное, цикл будет завершен, и управление программой будет передано следующей команде.
В приведенном ниже примере на каждой итерации цикл печатает текущее значение counter
переменных и увеличивает значение переменной на единицу.
#!/bin/bash
counter=0
until [ $counter -gt 5 ]
do
echo Counter: $counter
((counter++))
done
Цикл повторяется до тех пор, пока переменная counter
имеет значение больше четырех. Сценарий выдаст следующий результат:
Counter: 0
Counter: 1
Counter: 2
Counter: 3
Counter: 4
Counter: 5
Используйте операторы break
и continue
для управления выполнением цикла.
Bash until
Loop Пример
Следующий скрипт может быть полезен, когда у вашего хоста git простои, и вместо того, чтобы вручную вводить git pull
несколько раз, пока хост не будет в сети, вы можете запустить скрипт один раз. Он будет пытаться вытащить репозиторий, пока не добьется успеха.
#!/bin/bash
until git pull &> /dev/null
do
echo "Waiting for the git host ..."
sleep 1
done
echo -e "nThe git repository is pulled."
Сценарий напечатает «Ожидание хоста git…» и sleep
одну секунду, пока хост git не перейдет в онлайн. Как только репозиторий извлечен, он напечатает «Репозиторий git извлечен».
Waiting for the git host ...
Waiting for the git host ...
Waiting for the git host ...
The git repository is pulled.
Выводы
Циклы while
и until
похожи друг на друга. Основное отличие состоит в том , что в while
цикл перебирает тех пор , пока условие принимает значение true
и until
итерации цикла, пока условие принимает значение false
.
Добавить комментарий