Учебники

AWK — Петли

Эта глава объясняет циклы AWK на подходящем примере. Циклы используются для повторного выполнения набора действий. Выполнение цикла продолжается до тех пор, пока условие цикла выполняется.

Для петли

Синтаксис цикла for

Синтаксис

for (initialization; condition; increment/decrement)
   action

Сначала оператор for выполняет действие инициализации, затем проверяет условие. Если условие истинно, он выполняет действия, после чего выполняет операцию увеличения или уменьшения. Выполнение цикла продолжается до тех пор, пока условие выполняется. Например, следующий пример печатает от 1 до 5, используя цикл for

пример

[jerry]$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'

Выполнив этот код, вы получите следующий результат —

Выход

1
2
3
4
5

Пока петля

Цикл while продолжает выполнять действие до тех пор, пока конкретное логическое условие не станет истинным. Вот синтаксис цикла while —

Синтаксис

while (condition)
   action

AWK сначала проверяет состояние; если условие истинно, выполняется действие. Этот процесс повторяется до тех пор, пока условие цикла оценивается как true. Например, следующий пример печатает от 1 до 5, используя цикл while —

пример

[jerry]$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'

Выполнив этот код, вы получите следующий результат —

Выход

1
2
3
4
5

Do-While Loop

Цикл do- while похож на цикл while, за исключением того, что условие теста оценивается в конце цикла. Вот синтаксис цикла do- while —

Синтаксис

do
   action
while (condition)

В цикле do- while оператор действия выполняется хотя бы один раз, даже если оператор условия оценивается как ложный. Например, следующий пример печатает от 1 до 5 чисел, используя цикл do- while —

пример

[jerry]$ awk 'BEGIN {i = 1; do { print i; ++i } while (i < 6) }'

Выполнив этот код, вы получите следующий результат —

Выход

1
2
3
4
5

Перерыв Заявление

Как следует из названия, он используется для завершения выполнения цикла. Вот пример, который завершает цикл, когда сумма становится больше 50.

пример

[jerry]$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) { 
      sum += i; if (sum > 50) break; else print "Sum =", sum 
   } 
}'

Выполнив этот код, вы получите следующий результат —

Выход

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

Продолжить заявление

Оператор continue используется внутри цикла, чтобы перейти к следующей итерации цикла. Это полезно, когда вы хотите пропустить обработку некоторых данных внутри цикла. Например, следующий пример использует оператор continue для печати четных чисел от 1 до 20.

пример

[jerry]$ awk 'BEGIN {
   for (i = 1; i <= 20; ++i) {
      if (i % 2 == 0) print i ; else continue
   } 
}'

Выполнив этот код, вы получите следующий результат —

Выход

2
4
6
8
10
12
14
16
18
20

Заявление о выходе

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

пример

[jerry]$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) {
      sum += i; if (sum > 50) exit(10); else print "Sum =", sum 
   } 
}'

Выход

Выполнив этот код, вы получите следующий результат —

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

Давайте проверим статус возврата скрипта.

пример

[jerry]$ echo $?

Выполнив этот код, вы получите следующий результат —