shell不支持二维数组,但是还是可以通过简单的方式实现二维数组的功能 。
思路就是用数组A1(行)里的值作为B系列(列)数组的变量名,
话不多说,直接上代码:
#!/bin/bash
A1=(B1 B2 B3)
B1=(B1v1 B1v2 B1v3 B1v4)
B2=(B2v1 B2v2 B2v3 B2v4)
B3=(B3v1 B3v2 B3v3 B3v4)
#循环方式输出B列数据
for A in ${A1[@]};do
echo ${A}
TMP=$A[@] #这里的处理是关键
TempB=(${!TMP}) #这里的处理是关键
for B in ${TempB[@]};do
echo ${B}
done
done
#下标方式输入B列数据
for A in ${A1[@]};do
echo ${A}
TMP=$A[@]
TempB=(${!TMP})
echo ${TempB[0]} ${TempB[1]} ${TempB[2]} ${TempB[3]}
done
输出如下:
B1
B1v1
B1v2
B1v3
B1v4
B2
B1v1
B1v2
B1v3
B1v4
B3
B1v1
B1v2
B1v3
B1v4
B1
B1v1 B1v2 B1v3 B1v4
B2
B2v1 B2v2 B2v3 B2v4
B3
B3v1 B3v2 B3v3 B3v4