在 Bash 中使用数组
存储和处理值列表。学习如何声明数组、访问和遍历元素、获取数组长度,以及使用关联数组作为键值映射。
在 Bash 中使用数组 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
为什么使用数组
普通变量只能保存一个值,而数组可以保存多个值——非常适合在脚本中循环处理文件名列表、名称列表或参数列表。
声明数组
将值列在圆括号中,并用空格分隔,即可创建索引数组。
fruits=(apple banana cherry)访问元素
使用 ${array[i]} 通过索引访问元素,索引从 0 开始。大括号是必需的。
echo "${fruits[0]}" # apple
echo "${fruits[2]}" # cherry一次访问所有元素
使用 ${array[@]} 展开所有元素。这正是循环遍历数组时使用的形式。
echo "${fruits[@]}" # apple banana cherry数组长度
使用 ${#array[@]} 获取元素数量。
echo "${#fruits[@]}" # 3使用 for 循环迭代
展开数组中的所有元素即可遍历数组。为 "${arr[@]}" 加引号可以保留值中的空格。
for f in "${fruits[@]}"; do
echo "Fruit: $f"
done添加元素
使用 += 向数组追加元素。您也可以直接为指定索引赋值。
fruits+=(mango)
fruits[10]="kiwi"删除元素
unset 会根据索引删除元素。请注意,这会留下空缺,而不会重新编排索引。
unset 'fruits[1]' # removes banana截取数组
使用 ${array[@]:start:count} 提取一个子范围。
echo "${fruits[@]:0:2}" # first two关联数组
Bash 4 及更高版本支持键值映射。使用 declare -A 声明,然后通过字符串键进行索引。
declare -A ages
ages[alice]=30
ages[bob]=25
echo "${ages[alice]}" # 30迭代键和值
使用 ${!array[@]} 遍历键,并通过每个键获取对应的值。
for name in "${!ages[@]}"; do
echo "$name is ${ages[$name]}"
done快速检查
测试您对本节内容的理解。
回顾
您学会了 Bash数组:使用 () 声明,使用 ${arr[i]} 索引,使用 ${arr[@]} 展开所有元素,使用 ${#arr[@]} 计数,进行循环遍历,使用 += 追加元素,截取数组,以及使用 declare -A 创建关联键值映射。
常见问题解答
「在 Bash 中使用数组」课时是免费的吗?
是的 — 「在 Bash 中使用数组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「在 Bash 中使用数组」这节课中我会学到什么?
存储和处理值列表。学习如何声明数组、访问和遍历元素、获取数组长度,以及使用关联数组作为键值映射。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「在 Bash 中使用数组」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 第一个 Bash 脚本与 Shebang
- 变量与用户输入
- 条件语句(if、else、elif)
- 在 Bash 中使用数组