在 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
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!
浙公网安备 33010602011771号