Shell-数组操作

1、基础知识

1.1、数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0.
在shell中,数组也称为 关联数组,因为它是将 变量名和值关联在一起了。

1.2、作用

将一个范围的数据放在一起,进行批量管理分类。

数组按照表现形式上,可以划分为:
有序数组(普通数组) - 所有元素按照顺序依次排列
无序数组 - 元素的不按照顺序排列,可以有间隔,即 1 3 5 等,中间找不到 2 4

1.3、常见操作

1.3.1、创建数组

定制空数组      declare -a array_name
定制数组        array_name=(value1 ... valuen)
定制数组(单值)  array_name[0]=value0
定制稀疏数组    array_name=([index1]=v1 [index3]=v3 [index7]=v7)

1.3.2、查看数组

获取具体内容        ${array_name[index]}
获取长度            ${#array_name[index]}
获取内容的部分信息   ${array_name[index]:pos:length}
获取所有索引        ${!array_name[@]}

1.3.3、更改数组

更改具体值   array_name[index]=值
部分内容替换 ${array_name[index]/原内容/新内容}

1.3.4、删除数组

删除具体值    unset array_name[index]
删除整个数组  unset array_name

2、实践

2.1、创建数组

# 标准创建
array_name=(value0 value1 value2 value3)

# 逐个增加
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

# 无序,稀疏数组
array_name=([0]=v1 [2]=v2 [4]=v4)

技巧 - 把指定目录下的所有文件动态添加到数组中
array=($(ls /tmp/))
for i in ${!array[@]};do echo ${array[i]}; done

2.2、查看数组

# 查看指定位置元素
echo ${array_name[1]}
注意:索引的值是从 0 开始计算的

# 查看所有位置元素
echo ${array_name[@]}
echo ${array_name[*]}

# 获取所有位置的索引号
echo ${!array_name[*]}

# 获取元素数量
echo ${#array_name[1]}
echo ${#array_name[@]}
echo ${#array_name[*]}

# 获取元素的部分信息
echo ${array_name[2]:0:2}

2.3、修改数组

# 单值更改
array_name[1]=444
echo ${array_name[1]}

# 内容更改
echo ${array_name[2]}

# 查询修改
echo ${array_name[2]/va/hahhah}

2.4、删除数组

# 删除单个元素
unset array_name[1]

# 删除整个数组
unset array_name

 

posted @ 2023-05-24 12:15  小粉优化大师  阅读(371)  评论(0)    收藏  举报