shell中的数组

声明

alphas[2]=c

alphas[0]=a

alphas[1]=b
alphas=([2]=c [0]=a [1]=b)
alphas=(a b c)

上面3种形式都声明的数组包含相同的内容,第一个元素是a,第二个元素是b,第三个元素是c。

其中,第二种方式可以和第三种方式混合使用:

alphas=([2]=c  [0]=a [1]=b d e)

当使用这种方式声明时,d和e的索引号直接顺接前面指定的索引,因此,本例中,d的索引号为2,e的索引号为3,因此,整个数组就是a b d e,原来索引2的元素c被d覆盖

为数组单个元素赋值

如果想为数组单个元素赋值,直接使用alpha[index]=value

为整个数组赋值

如果重新为整个数组赋值,可以直接使用声明的第二种或者第三种或者两者的混合形式。重新为整个数组赋值之后,数组原来的值就lost了

引用数组单个元素

引用数组单个元素使用${alphas[index]},比如${alphas[1]}引用的就是元素b。而直接$alphas引用的数组的第0个元素。

引用整个数组

引用整个数组可以使用*和@符号,其中的差别和命令行参数一样。完全取决于有没有加双引号,如果不加双引号,则两者是一样的。引用形式为${alphas[*]}或者${alphas[@]}

移除数组单个元素

alphas=(a b c)
unset alphas[1]

上面代码首先声明了一个包含3个元素的数组alphas,之后移除了第1个元素。这里需要注意的是,虽然移除了第一个元素,但是不表示${alphas[1]}就是c,相反,c仍然是第2个元素,用${alphas[2]}引用。也就是说,此时数组alphas中只有2个元素,第0个元素a,第2个元素c。

移除整个数组

alphas=(a b c)
unset alphas 或者 unset alphas[*] 或者 unset alphas[@]


获取数组中每一个元素的对应索引

alphas=([0]=a [5]=b [100]=c)
echo ${!alphas[*]} 或者 echo ${!alphas[@]}

上面代码可以获取数组alphas中元素的索引值:0 5 100

获取单个元素的长度

想要获取数组中单个元素的长度,使用${#alphas[index]}

获取整个数组的长度

想要获取整个数组的长度,使用${#alphas[*]}或者${#alphas[@]}

原文地址:https://www.cnblogs.com/chaoguo1234/p/5722845.html