Циклы являются одним из фундаментальных понятий языков программирования. Циклы удобны, когда вы хотите запускать серию команд снова и снова, пока не будет выполнено определенное условие.
В языках сценариев, таких как Bash, циклы полезны для автоматизации повторяющихся задач. В скриптах Bash есть 3 базовых конструкции цикла: for loop, while loop, и until loop..
Эта статья объясняет основы цикла в Bash.
Цикл before используется для выполнения заданного набора команд, если данное условие оценивается как ложное.
Цикл until в Bash принимает следующую форму:
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
Следующий скрипт может быть полезен, если у вашего хоста git время простоя, и вместо того, чтобы вручную вводить git pull несколько раз, пока хост не подключится, вы можете запустить скрипт один раз. Он будет пытаться вытащить хранилище, пока он не будет успешно извлечен.
#!/bin/bash until git pull &> /dev/null do echo "Ожидание хоста git ..." sleep 1 done echo -e "\nРепозиторий git извлечен."
Скрипт напечатает «Ожидание хоста git …» и будет спать в течение одной секунды, пока хост git не выйдет в сеть. После извлечения хранилища будет напечатано «Репозиторий git извлечен».
Ожидание хоста git ... Ожидание хоста git ... Ожидание хоста git ... Репозиторий git извлечен.
Циклы while и until очень похожи, за исключением того, что цикл while итерирует до тех пор, пока выполняется условие true, а цикл до повторяется до тех пор, пока выполняется условие false.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.