Shell⼀维数组和⼆维数组⼀维数组
Shell下定义⼀维数组的形式是A=(element1 element2 element3 .... element4),然后
依次按照A[0] 、A[1]…A[n]来分别读取数组⾥的内容。
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
还可以单独定义数组的各个分量:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
可以不使⽤连续的下标,⽽且下标的范围没有限制。
读取数组
读取数组元素值的⼀般格式是:
${array_name[index]}
例如:
valuen=${array_name[2]}
使⽤@ 或 * 可以获取数组中的所有元素,例如:
${array_name[*]}
${array_name[@]}
获取数组的长度
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
⼆维数组
Shell下定义⼆维数组格式是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 #这⼀步就得到了每⼀⾏,⽽如果我们需要⼆维数组,那么可以这样做
done
for i in "${a[@]}" ; do
b=($i) #此时b就相当于⼆维数组⾥⾯的⼀维数组了,然后可以再次遍历
for j in "${b[@]}"; do
#do someting
done
done
其实我们有时候完全可以这样做:构造成这样:a=(1 2 3 4 5 6 7 8 9),然后操作的时候利⽤第i⾏j列的元素等于i*len+j,len是数组的第⼆维度⼤⼩,这样做有时候更简单,但是就必须得控制⼀下边界了,⽐如3*3的数组,你可能初始化只给出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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论