数组与关联数组

数组允许脚本利用索引将数据集合保存为独立的条目。Bash支持普通数组和关联数组,前者使用整数作为数组索引,后者使用字符串作为数据索引。

定义数组的方法有很多种

可以在单行中使用数值列表来定义一个数组:

array_var=(test1 test2 test3 test4 test5 test6)

另外,还可以将数组定义成一组“索引-值”

array_var[0]="test1"
array_var[1]="test2"
array_var[2]="test3"
array_var[3]="test4"
array_var[4]="test5"
array_var[5]="test6"
打印特定索引的数组元素内容:数组与关联数组_第1张图片

echo ${array_var[*]}和echo ${array_var[@]}含义为列表形式打印出数组中的所有值,echo ${#array_var[*]}则表示打印数组长度。

注意:declare -a 表示定义普通数组  

补充内容

关联数组从bash4.0版本开始引入。当使用字符串(站点名、用户名等非顺序数字等)为索引时,关联数组要比数字索引数组更容易使用。

定义关联数组

在关联数组中,我们可以用任意的文本作为数组索引。首先,需要使用声明语句将一个变量定义为关联数组:

declare -A 表示定义为关联数组

declare -A ass_array

声明之后,可以用下列两种方法将元素添加到关联数组中。

使用行内“索引-值”列表:

ass_array=([index1]=va11 [index2]=va12)

数组与关联数组_第2张图片

使用独立的“索引-值”进行赋值

ass_array[index1]=va11

ass_array[index2]=va12

举个例子,用关联数组定义水果价格:

declare -A fruits_value

fruits_value=([apple]='5 yuan' [orange]='3 yuan')

用下面的方法显示数组内容:

echo "apple costs ${fruits_value[apple]}"

Apple costs 5 yuan

列出数组的索引

每一个数组元素都有对应的索引。普通数组和关联数组的索引类型不同。我们可以用下面的方法获取数组的索引列表:

echo ${!array_var[*]}

也可以这样

echo ${!array_var[@]}

以fruits_value数组为例,运行如下:

echo ${!fruits_value[*]}

数组与关联数组_第3张图片

你可能感兴趣的:(shell,linux)