数组
数组的定义和赋值
bash 提供对于一维数组的支持,需要注意的是,它并不支持多维数组。通常情况下,数组的索引为一个整数,从 0 开始计算。但是我们也可以使用字符串作为数组的索引,这样的数组被称为关联数组。
在 bash 中,变量其实可以理解为只有一个元素的索引数组。如下示例:
1 |
|
上述定义的变量 var1 可以理解为一个只有一个元素的数组。
对于索引数组的定义,我们只需给对应的索引分配一个值,即会自动创建一个索引数组,如下所示:
1 | # 给索引 0 分配一个值,即会自动创建索引数组 var2 |
除了上述介绍的定义索引数组的方式,我们还可以使用 var=(value1 value2 value3) 的方式
进行赋值,并且可以再赋值的时候指定索引。
如下示例:
1 |
|
在给索引数组分配值时,如果指定了索引,则将该索引分配给指定的值。
使用 read 定义
使用 read
命令接受输入,并保存为一个数组,需要使用到 -a
参数,即array。
如下示例:
1 |
|
使用 declare 定义
declare
命令除了可以定义索引数组之外(使用 -a
参数),还可以定义关联数组(使用 -A
参数)。
如下示例,我们使用 declare
声明一个索引数组:
1 |
|
引用
对于数组的引用来说,我们有以下几种方式:
方式 | 含义 |
---|---|
“${array_name[n]}” | 查看指定索引的元素,n 为数组的索引 |
“${array_name[*]}” | 所有的数组元素的值 |
“${array_name[@]}” | 所有的数组元素的值 |
“${!array_name[@]}” | 所有的索引 |
“${!array_name[*]}” | 所有的索引 |
“${array_name[*]:m}” | 从索引m 开始,后面的所有元素 |
“${array_name[*]:m:n}” | 从索引 m 开始,后面的 n 个元素 |
“${“”#array_name[*]}” | 显示数组元素个数 |
数组删除
删除数组也是使用 unset
命令,但是我们可以仅删除数组中的某个元素,也可以删除整个数组
。
如下示例:
1 |
|