从版本4开始支持关联数组,查看版本:
# bash -version
以下是一些创建索引数组的常见方式:
1. 静态定义:
array[0]=val1
array[1]=val2
array[2]=val3
2. 动态定义:
declare -a array
array=(val1 val2 val3)
3. 自动创建并赋值:
array=([0]=val1 [1]=val2 [2]=val3)
4. 从命令输出创建数组
# 这将执行命令(这里是 ls /opt/script),并将输出的每一行作为数组array 的一个元素。
mapfile -t array < <(ls /opt/script)
创建关联数组(Bash 4.0及以上)
1.创建并赋值:
declare -A assoc_array
assoc_array[key1]=val1
assoc_array[key2]=val2
2. 自动创建并赋值:
declare -A assoc_array
assoc_array=([key1]=val1 [key2]=val2)
3. 将关联数组的值赋值给 索引数组
declare -A assoc_array
assoc_array=([key1]=val1 [key2]=val2)
# 创建一个索引数组,包含关联数组的所有值
array=("${assoc_array[@]}")
切片数组
提取子数组:
# 从索引1开始提取3个元素
subarray=("${array[@]:1:3}")
扩展数组
添加元素到数组末尾:
array+=(new_element1 new_element2)
在数组开头添加元素:
array=(new_element1 new_element2 "${array[@]}")
删除数组元素
1. 删除特定索引的元素:
unset array[1] # 删除索引为1的元素
2. 删除数组中的特定值:
array=("${array[@]/elem_to_remove}")