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[@]}