博客园  :: 首页  :: 管理

关于Bash - Shell脚本中的索引数组(Indexed Array)

Posted on 2026-04-13 11:31  520_1351  阅读(27)  评论(0)    收藏  举报

在 Shell 脚本(特别是 Bash)中,索引数组(Indexed Array) 是最基础且最常用的数据结构之一。
它允许你将多个值存储在同一个变量名下,并通过整数索引(从 0 开始)来访问这些值。

不同于 C 语言等编译型语言,Shell 中的数组是动态的,不需要预先定义大小,且支持稀疏存储(即索引可以不连续)。

以下是关于 Shell 索引数组的详细操作指南:

1. 定义与初始化

在 Bash 中,你不需要显式声明数组即可使用,但使用 declare -a 是一个良好的编程习惯。

直接赋值(推荐): 使用圆括号 () 包裹元素,空格分隔。

逐个赋值: 指定索引进行赋值。

命令输出赋值: 将命令的执行结果存入数组。

# 方法一:一次性初始化
fruits=("苹果" "香蕉" "橘子" "葡萄")

# 方法二:显式声明并逐个赋值
declare -a colors
colors[0]="红色"
colors[1]="绿色"
colors[5]="蓝色" # 支持稀疏数组,索引不需要连续
colors[3]="白色" # 索引也可以将低索引号写在后面,for遍历输出时,低索引的元素会先输出

除了上面的两种方式,还是一种可以不指定索引号的方法, 可以追加元素到数组中 ,方法即  索引数组变量名 += ("新元素的值")

declare -a colors
colors[0]="红色"
colors+=("author-qq-5201351")
colors[2]="绿色"
colors[5]="蓝色" # 支持稀疏数组,索引不需要连续
colors[3]="白色" # 索引也可以将低索引号写在后面,输出时,低索引的元素会先输出

注:+=后面需要跟上 ("新元素的值") ,否则的话,如果去掉(),无论这个+= 在第几行,都会添加到第一个元素的值后面,最后变成第一个新元素的值 即 红色author-qq-5201351

 

访问数组时,必须使用 ${} 语法,直接使用 $var 通常只能获取到第一个元素。

 

删除整个数组变量:unset var 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19858578