千家信息网

shell数组的用法

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,变量:存储单个元素的内存空间:数组(多个连续的内存空间):存储多个元素的连续的内存空间:数组名:索引:编号从0开始,属于数值索引;注意:索引也可支持使用自定义的格式,而不仅仅是数值格式:bash的数组
千家信息网最后更新 2025年02月01日shell数组的用法

变量:存储单个元素的内存空间:
数组(多个连续的内存空间):存储多个元素的连续的内存空间:

数组名:
索引:编号从0开始,属于数值索引;
注意:索引也可支持使用自定义的格式,而不仅仅是数值格式:
bash的数组支持稀疏格式
引用数组中元素:${ARRAY_NAME[INDEX]}

声明数组:
declare -a ARRAY_NAME
declare -A ARRAY_NAME:关联数组:kv

数组元素的赋值:
(1)一次只赋值一个元素:
ARRAY_NAME[INDEX]=VALUE
#weekdays[0]="Sunday"
#weekdays[4]="Thursday"

(2)一次赋值全部元素:
ARRAY_NAME=("VAL1","VAL2","VAL3",...)
(3)只赋值特定元素:
ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
(4)read -a ARRAY

引用数组中的某个元素:

${ARRAY_NAME[INDEX]}
注意:省略[INDEX]表示引用下标为0的元素

显示数组中所有元素:

${ARRAY_NAME[*]},或者${ARRAY_NAME[@]}

统计数组的长度(数组中元素的个数):
${#ARRAY_NAME[*]},${#ARRAY_NAME[@]}

引用数组中的元素:
依次取出数组中所有元素:${ARRAY[@]}或者${ARRAY[*]}

数组切片:

取出数组中指定长度的元素:${ARRAY[@]:offset:number}:也叫做数组切片
offset:要跳过的元素个数
number:要取出的元素个数
例 :#echo ${weekdays[@]:1:2}

取出偏移量之后的所有元素:${ARRAY[@]:offset}
#echo ${weekdays[@]:1}
向数组中追加元素:
ARRAY[${#ARRAY[*]}]
删除数组中的某元素:
unset ARRAY[INDEX]
关联数组:
declare -A ARRAY_NAME
ARRAY_NAME=([index_name]='val1' [index_name2='val2' ...])

0