Shell 数组基础用法与注意事项
在编写 Shell 脚本时,处理一组相关数据往往比单个变量更方便。数组就是为此而生的,它可以存放多个值。不过要注意,Bash Shell 只支持一维数组,不支持像 Python 那样的嵌套结构。初始化时也不需要预先定义数组大小,这点和 PHP 类似,动态分配比较灵活。
数组元素的下标由 0 开始计数,这和绝大多数编程语言保持一致,但有些细节在实际使用中容易踩坑。
如何声明数组
声明方式其实挺多的,最常用的是直接赋值:
fruits=("apple" "banana" "orange")
这样 fruits 就是一个包含三个元素的数组。你也可以指定索引:
colors=([0]="red" [2]="blue")
这里跳过了索引 1,实际使用时要注意中间的空缺。
访问与修改
读取单个元素用下标,读取所有元素用 @ 符号。记得给变量引用加上双引号,防止空格导致的问题:
echo ${fruits[0]} # 输出 apple
echo ${fruits[@]} # 输出所有元素
修改也很简单,直接覆盖对应位置的值即可。
获取长度与遍历
想知道数组里有多少个元素?${#array[@]} 就能搞定。遍历通常配合 for 循环使用:
for fruit in "${fruits[@]}"; do
echo $fruit
done
这里一定要用双引号包裹 "${fruits[@]}",否则如果元素里有空格,会被当成多个参数处理。
小结
Shell 数组虽然功能有限,但足够应付日常脚本的列表处理需求。记住它是一维的,下标从 0 开始,并且在使用遍历时注意引号保护,基本就不会出错了。

