Bash цикл While

Bash while Loop

29 Июня 2020 | Терминал

Это руководство охватывает основы while циклов в Bash. Мы также покажем вам , как использовать break и continue заявление , чтобы изменить поток цикла.

Bash цикл While

Циклы являются одним из фундаментальных понятий языков программирования. Циклы удобны, когда вы хотите выполнить серию команд несколько раз, пока не будет выполнено определенное условие.

В языках сценариев, таких как Bash, циклы полезны для автоматизации повторяющихся задач. В скриптах Bash есть три основных конструкции циклов: for, while и until.


Цикл While

while Цикл используется для выполняет заданный набор команд неизвестное число раз до тех пор , как данное условие принимает значение истинно.

Цикл Bash while принимает следующую форму:

while [CONDITION]
do
  [COMMANDS]
done
 

Обявление начинается с while ключевого слова, за которым следует условное выражение.

Условие оценивается перед выполнением команд. Если условие оценивается как true, команды выполняются. В противном случае, если условие оценивается как ложное, цикл прерывается, и управление программой передается следующей команде.

В приведенном ниже примере на каждой итерации текущее значение переменной i печатается и увеличивается на единицу.

i=0

while [ $i -le 2 ]
do
  echo Number: $i
  ((i++))
done
 
Цикл повторения повторяется до тех пор, пока i он меньше или равен двум. Он выдаст следующий вывод:
Number: 0
Number: 1
Number: 2
 

Бесконечный while цикл

Бесконечный цикл - это цикл, который повторяется бесконечно и никогда не заканчивается. Если условие всегда оценивается как истинное, вы получаете бесконечный цикл.

В следующем примере мы используем встроенную команду : для создания бесконечного цикла. : всегда возвращает истину. Вы также можете использовать true встроенный или любой другой оператор, который всегда возвращает true.

while :
do
  echo "Press <CTRL+C> to exit."
  sleep 1
done
 

while Цикл выше , будет работать бесконечно. Вы можете завершить цикл, нажав CTRL+C .

Вот однострочный эквивалент:

while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
 

Одним из наиболее распространенных применений while цикла является построчное чтение файла, потока данных или переменной.

Вот пример, который читает /etc/passwd файл построчно и печатает каждую строку:

file=/etc/passwd

while read -r line; do
  echo $line
done < "$file"
 

Вместо того, чтобы управлять while циклом с условием, мы используем входную redirection ( < "$file" ), чтобы передать файл read команде, которая управляет циклом. while Цикл будет выполняться до тех пор , последняя строка не читается.

При чтении файла построчно, всегда используйте read с -r возможностью предотвращения обратного слэша выступать в качестве экранирующего символа.

По умолчанию read команда обрезает начальные / конечные пробельные символы (пробелы и символы табуляции). Используйте IFS= опцию прежде, read чтобы предотвратить это поведение:

file=/etc/passwd

while IFS= read -r line; do
  echo $line
done < "$file"
 

Операторы break и continue

break И continue заявления могут быть использованы для управления выполнением цикла While.

break 

break Оператор завершает текущий цикл и передает управление программой к команде, следующей за прерванный цикл. Обычно используется для завершения цикла при выполнении определенного условия.

В следующем примере выполнение цикла будет прервано, как только текущий повторяющийся элемент будет равен 2 

i=0

while [ $i -lt 5 ]
do
  echo "Number: $i"
  ((i++))
  if [[ "$i" == '2' ]]; then
    break
  fi
done

echo 'All Done!'
 

Number: 0
Number: 1
All Done!
 

continue 

continue Оператор завершает текущую итерацию цикла и передает управление программой к следующей итерации цикла.

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

i=0

while [ $i -lt 5 ]
do
  ((i++))
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done

echo 'All Done!'
 

Number: 1
Number: 3
Number: 4
Number: 5
All Done!
 

Вывод 

while Цикл многократно выполняет заданный набор команд до тех пор , как условие истинно.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...