数组的类型 {#数组的类型}
普通数组 {#普通数组}
- 索引:通常是从0开始的整数,表示数组中的位置
- 例如,第一个元素的索引是0,第二个元素的索引是1,依此类推
- 元素:存储在数组中的实际值,每个索引对应一个元素值
- 例如,
my_array[0]
表示数组中的第一个元素。
- 例如,
- 普通数组使用可不声明(
declare -a [数组名]
)
|---------------|-------------------------------------------------------------------------------------------------------------|
| 1 2 3
| my_array=( "apple" "banana" "cherry" ) # 索引: 0 1 2 # 元素: "apple" "banana" "cherry"
|
关联数组 {#关联数组}
-
索引:在关联数组中,索引是字符串,而不是整数
- 每个索引表示一个键,它与一个特定的元素值相关联。
- 与普通数组最大的区别,其由 特定格式的键值对组成
-
元素:元素是与索引关联的值
- 关联数组中的每个索引都映射到一个元素值。
-
使用前必须声明(
declare -A [数组名]
)
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6
| declare -A fruit_colors fruit_colors[ "apple" ]= "red" fruit_colors[ "banana" ]= "yellow" fruit_colors[ "cherry" ]= "red" # 索引: "apple" "banana" "cherry" # 元素: "red" "yellow" "red"
|
数组的定义 {#数组的定义}
直接定义 {#直接定义}
格式为 array_name=(value1 value2 ... valueN)
|-----------|-----------------------|
| 1
| array=(a b c)
|
索引定义 {#索引定义}
格式为 array_name=( [1]=value1 [2]=value2 ... [N]=valueN )
|-----------|-----------------------------------|
| 1
| array=([1]=a [2]=b [3]=c)
|
数组的取值 {#数组的取值}
要访问数组中的值,可以使用 ${数组名[索引]}
读取索引 {#读取索引}
这用于获取数组的索引(或键),而不是数组元素本身
echo ${!array[*]}
:视为整体
echo ${!array[@]}
:视为个体
读取数值 {#读取数值}
返回的是数组中的所有元素,不包括索引
echo ${array[*]}
:视为整体
echo ${array[@]}
:视为个体
特定元素 {#特定元素}
echo ${array[0]}
:访问数组的第一个元素
echo ${array[@]:1}
:表示从索引 1 开始,包括索引 1 及之后的所有元素
echo ${array[@]:1:2}
:从第二个元素开始,访问连续的两个元素
其他用法 {#其他用法}
echo ${#array[@]}
: 获取数组中的元素个数(数组的长度)
echo ${#array[n]}
:获取数组 第n个
元素的字符个数
数组的遍历 {#数组的遍历}
通过索引 {#通过索引}
- 如:循环以索引
i
来迭代数组array
- 适合需要根据 元素的索引 处理数组元素的情况
|---------------------|-----------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6
| #!/bin/bash names=(Tom Jeny David) for (( i= 0 ;i< ${#names[*]} ;i++ )) do echo ${names[$i]} done
|
通过元素 {#通过元素}
- 如:循环迭代数组
array
中的每个元素,并将每个元素赋值给变量i
- 适合需要 依次访问数组元素 的情况
|-------------------------|-----------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8
| #!/bin/bash names=(Tom Jeny David) index=0 for i in ${names[@]} do echo "第 ${index} 个元素的值为: ${i} " let index++ done
|
数组删切替 {#数组删切替}
删除 {#删除}
使用 unset array[index]
命令,可以删除数组中的特定元素
array
是数组名index
是索引
切片 {#切片}
使用 ${array[@]:start:length}
命令,可对数组进行切片
start
是起始索引length
是要包括的元素的数量
替换 {#替换}
使用 ${array[@]/old/new}
命令,可对数组的某个特定元素进行全量替换
array
是数组名old
是需要替换的元素new
是替换后的元素