Shell一維數(shù)組和二維數(shù)組
一維數(shù)組
Shell下定義一維數(shù)組的形式是A=(element1 element2 element3 .... element4)彻桃,然后
依次按照A[0] 、A[1]…A[n]來分別讀取數(shù)組里的內(nèi)容哈垢。
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
還可以單獨定義數(shù)組的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
可以不使用連續(xù)的下標,而且下標的范圍沒有限制。
讀取數(shù)組
讀取數(shù)組元素值的一般格式是:
${array_name[index]}
例如:
valuen=${array_name[2]}
使用@ 或 * 可以獲取數(shù)組中的所有元素,例如:
${array_name[*]}
${array_name[@]}
獲取數(shù)組的長度
# 取得數(shù)組元素的個數(shù)
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得數(shù)組單個元素的長度
lengthn=${#array_name[n]}
二維數(shù)組
Shell下定義二維數(shù)組格式是A=(‘element1 element2’ ‘element3 .... element4’);
例如:
a=('1 2 3' '4 5 6' '7 8 9')
也可以這樣
a=(
'1 2 3'
'4 5 6'
'7 8 9'
)
然后我們可以利用
for i in "${a[@]}" ; do
echo $i #這一步就得到了每一行疯溺,而如果我們需要二維數(shù)組论颅,那么可以這樣做
done
for i in "${a[@]}" ; do
b=($i) #此時b就相當于二維數(shù)組里面的一維數(shù)組了,然后可以再次遍歷
for j in "${b[@]}"; do
#do someting
done
done
其實我們有時候完全可以這樣做:構(gòu)造成這樣:a=(1 2 3 4 5 6 7 8 9)囱嫩,然后操作的時候利用第i行j列的元素等于i*len+j恃疯,len是數(shù)組的第二維度大小,這樣做有時候更簡單墨闲,但是就必須得控制一下邊界了今妄,比如3*3的數(shù)組,你可能初始化只給出8個元素鸳碧。
比如:
ip_array=(
200?ZC
201? ZR
202?ZR
203 ZR
)
len=${#ip_array[@]}
echo "len is $len"
for((i=0;i<len;i+=2))
do
echo $i
ip=${ip_array[i]}
role=${ip_array[i+1]}
echo "${ip_array[i]} , ${ip_array[i+1]}"
echo "ip is $ip, role is $role"
done