Linux

Shell数组

2019-06-26  本文已影响0人  王勇1024

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。

与大部分编程语言类似,数组元素的下标由0开始。

array_name=(value1 ... valuen)

Shell 是弱类型的,它并不要求所有数组元素的类型必须相同,例如:

my_array=(1 2 "C" 4)

Shell 数组的长度不是固定的,定义之后还可以增加元素。例如,对于上面的 my_array 数组,它的长度是 4,使用下面的代码会在最后增加一个元素,使其长度扩展到 5:

my_array[4]="E"

此外,你也无需逐个元素地给数组赋值,下面的代码就是只给特定元素赋值:

ages=([3]=24 [5]=19 [10]=12)

以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。

我们也可以使用下标来定义数组:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
${array_name[index]}

注意:不能写成 $array_name[index]的形式

示例

$ arr=(A B C D)
$ echo ${arr[2]}
C
$ arr=(A B C D)
$ echo ${arr[*]}
A B C D
$ echo ${arr[@]}
A B C D
$ arr=(A B C D)
$ echo 数组的长度为: ${#arr[@]}
数组的长度为: 4
$ echo 数组的长度为: ${#arr[*]}
数组的长度为: 4
$ str="A B C D"
$ arr=(${str})
$ echo ${arr[*]}
A B C D
array2=( "${array[@]}" )
$ arr1=(A B C D)
$ arr2=(1 2 3 4)
$ arr_new=(${arr1[*]} ${arr2[*]})
$ echo 合并后数组元素:${arr_new[*]}
合并后数组元素:A B C D 1 2 3 4
unset array_name[index]

其中,array_name 表示数组名,index 表示数组下标。
如果不写下标,而是写成下面的形式:

unset array_name

那么就是删除整个数组,所有元素都会消失。示例:

arr=(A B C D)
$ unset arr[1]
$ echo ${arr[*]}
A C D
$ unset arr
$ echo ${arr[*]}

上一篇下一篇

猜你喜欢

热点阅读