(
1
)
if
语句的功能是根据用户指定的条件来决定执行程序的哪个分支
if
(expression)
{
statement1
statement2
}
else
{
statement3
statement4
}
[root@localhost ~]
# awk -F: '{if ($1=="root") printf "%-10s %-15s\n", $1,
"Admin"; else printf "%-10s %-15s\n",$1, "Common User"}' /etc/passwd | head -
n 3
[root@localhost ~]
# awk '{if ($1>$2) print NR,"max =",$1;else print NR,"max
=",$2}' file
(
2
)
while
语句是另外一种常用的循环结构
写法
1
:
while
(expression)
{
statement1
statement2
……
}
写法
2
:
do
{
statement1
statement2
...
}while (expression)
当表达式
expression
的值为真时,执行循环体中的
statement1
以及
statement2
等语句。如果循环体中
只包含一条语句,则可以省略大括号。
[root@localhost ~]
# awk 'BEGIN{while(i<=100) {sum+=i;i++}print "sum=",sum}'
sum
=
5050
(
3
)
for
语句
for
(expression1; expression2; expression3)
{
statement1
statement2
...
}
for
循环语句通常用在循环次数已知的场合中,其语法如下:
在上面的语法中,表达式
expression1
通常用来初始化循环变量,表达式
expression2
通常用来指定循环
执行的条件,表达式
expression3
通常用来改变循环变量的值。当表达式
expression2
的值为真时,执行
循环体中的语句。
[root@localhost ~]
# awk 'BEGIN {for(i=1;i<=100;i++){sum+=i;}print
"sum=",sum}'
sum
=
5050
for
循环还可以用来遍历数组元素:
语法:
for
(
变量
in
数组
){
语句
}
#
统计用户的
shell
[root@localhost ~]
# awk -F: '$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf
"%15s:%i\n",A,BASH[A]}}' /etc/passwd
(
4
)
break
语句
用户可以通过使用
break
语句在适当的时机退出
for
以及
while
等循环结构,而不必等到循环结构自己退
出。
(
5
)
continue
语句
continue
语句的主要功能是跳过循环结构中该语句后面的尚未执行的语句。
break
语句与
continue
语句
的功能有着明显的区别,前者是直接退出循环结构,而后者是跳过循环体中尚未执行的语句,重新执行
下一次循环。
(
6
)
next
语句
next
语句的功能与
continue
语句非常相似,但是
next
语句并不是用在循环结构中,而是用在整个
awk
程
序中。当
awk
执行程序时,如果遇到
next
语句,则提前结束对本行文本的处理,
awk
会继续读取下一行
数据,并且从第一个模式及其操作开始执行。
例如,下面的命令将显示其
ID
号为奇数的用户:
[root@localhost ~]
# awk -F: '{if($3%2==0) next;print $1,$3}' /etc/passwd
|head -n 3
bin
1
adm
3
sync
5
(
7
)
exit
语句
exit
语句的功能是终止
awk
程序的执行。