Циклы — одна из фундаментальных концепций языков программирования. Циклы удобны, когда вы хотите запускать серию команд снова и снова, пока не будет выполнено определенное условие.
В языках сценариев, таких как 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 .
Добавить комментарий