6、结构化控制语句
6.1 if语句
格式:if(条件) {body} else {else body}
实例1:判断/etc/passwd文件中的UID如果大于500则显示为“common user”,否则显示为“admin user”:
6.2 while循环
格式:while(条件){body}
条件为真时进入循环体。
实例2:打印出/etc/inittab文件中每行中为偶数个的字符串:
实例3:找出/etc/inittab文件中长度大于等于6个字符的字符串:
6.3 do-while循环
格式:do {body}while (条件)
先进入循环体执行一次,再判断条件。
将实例3用do-while改写如下:
6.4 for循环
格式:for (变量赋值;条件;条件修正){body}
将实例2和实例3分别使用for循环修改如下:
另外,for循环可用来遍历数组元素,其格式语法如下:
for (i in 数组名) {for body}
6.5 循环控制
(1)break
结束整个循环体。
(2)continue
结束本次循环,进入下一次循环。
以上两个命令的用法与在shell脚本中的用法相同。
6.6 next
提前结束对本行的处理,进入下一行的处理。
实例4:显示/etc/passwd文件中行号为奇数的用户名:
7、数组
7.1 定义数组变量
array[index]=element
inddex:可以使用任意字符串,如果某数组元素事先不存在,那么在引用时,awk会自动创建此元素并将其初始化为空串;因此要判断其数组是否存在某元素,可以使用“index in array”这种格式。
7.2 遍历数组变量
要遍历数组中的每一个元素,需要使用如下特殊结构:
for (var in array) {for body}
var会遍历array的索引。
实例5:统计netstat -ant显示的结果中每种状态的个数:
7.3 删除数组变量
delete array[index]
原文地址:http://petmaster.blog.51cto.com/5408825/1731078