Linux数组和关联数组详解

小云云
Lepaskan: 2018-03-31 13:48:03
asal
2713 orang telah melayarinya

数组是shell脚本非常重要的组成部分,它借助索引将多个独立的数据存储为一个集合。普通数组只能使用整数作为数组索引。Bash也支持关联数组,它可以使用字符串作为数组索引。在很多情况下,采用字符串式索引更容易理解,这时候关联数组就派上用场了。在这里,我们会看到普通数组和关联数组的用法。

(1) 定义数组的方法有很多种。可以在单行中使用一列值来定义一个数组:
array_var=(1 2 3 4 5 6)
#这些值将会存储在以0为起始索引的连续位置上
另外,还可以将数组定义成一组“索引-值”:
array_var[0]="test1"
array_var[1]="test2"
array_var[2]="test3"
array_var[3]="test4"
array_var[4]="test5"
array_var[5]="test6"

(2) 打印出特定索引的数组元素内容:

[rhx@localhost Test]$ vim arr.sh
Salin selepas log masuk

[rhx@localhost Test]$ source arr.sh
[rhx@localhost Test]$ echo ${array[0]}
//输出:1
[rhx@localhost Test]$ echo ${array[*]}
//输出数组元素:1 2 3 4 5 6 7 8 9 10
[rhx@localhost Test]$ echo ${array[@]}
//输出数组元素1 2 3 4 5 6 7 8 9 10
[rhx@localhost Test]$ echo ${#array[@]}
//输出数组长度:10
[rhx@localhost Test]$ echo ${#array[*]}
//输出数组长度:10
Salin selepas log masuk

关联数组从Bash 4.0版本开始被引入。借助散列技术,关联数组成为解决很多问题的有力工具。接下来就让我们一探究竟。
1. 定义关联数组

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

[rhx@localhost Test]$declare -A ass_array
Salin selepas log masuk

声明之后,可以用两种方法将元素添加到关联数组中。
 利用内嵌“索引-值”列表的方法,提供一个“索引-值”列表:
$ ass_array=([index1]=val1 [index2]=val2)
 使用独立的“索引-值”进行赋值:
$ ass_array[index1]=val1
$ ass_array'index2]=val2

举个例子,试想如何用关联数组为水果制定价格:

[rhx@localhost Test]$ declare -A fruit_value
[rhx@localhost Test]$ fruit_value=([apple]="100"[orange]="150")
[rhx@localhost Test]$ echo ${fruit_value[apple]}
Salin selepas log masuk

2. 列出数组索引
每一个数组元素都有一个索引用于查找。普通数组和关联数组具有不同的索引类型。我们可以用下面的方法获取数组的索引列表:
$ echo ${!array_var[*]}
也可以使用:
$ echo ${!array_var[@]
以先前提到的fruits_value数组为例,运行如下命令:
$ echo ${!fruits_value[*]}
orange apple
对于普通数组,这个方法同样可行。

Atas ialah kandungan terperinci Linux数组和关联数组详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan