📜  AWK-循环

📅  最后修改于: 2020-11-05 03:52:31             🧑  作者: Mango


本章以适当的示例说明AWK的循环。循环用于以重复的方式执行一组动作。只要循环条件为真,循环就会继续执行。

对于循环

for循环的语法是-

句法

for (initialization; condition; increment/decrement)
   action

最初, for语句执行初始化操作,然后检查条件。如果条件为真,则执行操作,然后执行递增或递减操作。只要条件为真,循环就会继续执行。例如,以下示例使用for循环打印1到5-

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

在执行此代码时,您将获得以下结果-

输出

1
2
3
4
5

While循环

while循环将继续执行操作,直到特定逻辑条件的值为真为止。这是while循环的语法-

句法

while (condition)
   action

AWK首先检查条件;如果条件为真,则执行操作。只要循环条件的值为真,就重复此过程。例如,以下示例使用while循环打印1到5-

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

在执行此代码时,您将获得以下结果-

输出

1
2
3
4
5

做时循环

do-while循环与while循环类似,不同之处在于测试条件是在循环结束时评估的。这是do-while循环的语法-

句法

do
   action
while (condition)

do-while循环中,即使条件语句的值为false,动作语句也至少执行一次。例如,以下示例使用do-while循环打印1-5个数字-

[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进程的退出状态代码。如果未提供任何参数,则exit返回状态零。这是当总和大于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 $?

在执行此代码时,您将获得以下结果-

输出

10