Linux自带的数组只有一维数组,类似于下面:
[zhouchen@hadoop202 ~]$ arr1=(adsa sadfdsa sdfada sfdsa dsafdas)
[zhouchen@hadoop202 ~]$ echo ${arr1[*]}
adsa sadfdsa sdfada sfdsa dsafdas
如果想保存二维数组,比如将key-value类型保存到Linux数组,可以参照下面这种方式:
[zhouchen@hadoop202 ~]$ file_info=(j_spn 3 j_tpf 3 j_ltr 2 j_link 2 j_ffp 2)
[zhouchen@hadoop202 ~]$ h=0
[zhouchen@hadoop202 ~]$ for (( h >=0 ;h < $(expr ${#file_info[*]} / 2 );h++))
> do
> name=${file_info[$(expr $h \* 2 + 0)]}
> num=${file_info[$(expr $h \* 2 + 1)]}
> echo "$name >> $num"
> done
j_spn >> 3
j_tpf >> 3
j_ltr >> 2
j_link >> 2
j_ffp >> 2
原理就是将一维数组进行每2个一组切片,然后切完片的第一个值为key,第二个为value。
同理可以实现三维数组:
[zhouchen@hadoop202 ~]$ file_info=(xiaoming 173 144 xiaohong 162 112 xiaohuang 175 156 xiaogou 141 141)
[zhouchen@hadoop202 ~]$ h=0
[zhouchen@hadoop202 ~]$ for (( h >=0 ;h < $(expr ${#file_info[*]} / 3 );h++))
> do
> name=${file_info[$(expr $h \* 3 + 0)]}
> hight=${file_info[$(expr $h \* 3 + 1)]}
> weight=${file_info[$(expr $h \* 3 + 2)]}
> echo "$name : $hight , $weight"
> done
xiaoming : 173 , 144
xiaohong : 162 , 112
xiaohuang : 175 , 156
xiaogou : 141 , 141