awk中數組比較隨意,同一個數組中的元素不一定要相同類型,而且數組下表可以是數字也可以是字符。
遍歷數組有兩種方式:
1. 類似於C++的方式
#-----------------------------/chapter11/ex11-30.sh------------------
#! /bin/awk -f
BEGIN {
#定義數組
stu[1]="200200110"
stu[2]="200200164"
stu[3]="200200167"
stu[4]="200200168"
stu[5]="200200172"
#計算數組的長度
len=length(stu)
#通過循環遍歷數組
for(i=1;i<=len;i++)
{
print i,stu[i]
}
}
注意:這種方式需要先計算得到數組的長度,這可以使用length()函數,前面提到length也可以用來計算字符串的長度,這裏還可以用來計算數組的長度,length括號裏的參數是數組名稱,返回的是數組的長度。
還有,數組的下標是從1開始計算,這點和C++, java不同。
2. 使用in命令
#-----------------------------/chapter11/ex11-31.sh------------------
#! /bin/awk -f
BEGIN {
#定義數組
arr[1]="Tim"
arr[2]="John"
arr["a"]=12
arr[3]=3.1415
arr[4]=5
arr[99]=23
#遍歷數組
for(n in arr)
{
print arr[n]
}
}
分析:for循環語句中使用in命令,也是可以遍歷出數組的所有元素。但是,輸出的順序不再按照數組定義的順序。如果要按照順序遍歷數組,必須使用第一種方式來遍歷數組。
但是,當定義數組的時候下標不是統一爲數字的話,那麼我們無法使用上面方式來遍歷,只能使用in命令來遍歷。