Linux Shell数组支持动态增删元素,追加常用+=语法,插入需手动重组,删除用unset留空槽,清空可用unset arr或arr=()。
Linux Shell 中的数组支持动态增删元素,操作简单但需注意语法细节。追加和删除都基于索引或整体结构,不涉及类型限制,也不需要预先声明大小。
最常用的是 += 语法,直接在原数组后添加新值:
arr+=(new_item) —— 追加一个元素arr+=(item1 item2 item3) —— 一次追加多个元素arr=("${arr[@]}" extra1 extra2) —— 等效写法,显式拼接,适合兼容性要求高的场景Shell 数组不提供“中间插入”原生命令,但可通过下标赋值实现覆盖或占位:
arr[5]="value" —— 若索引 5 原来为空,就相当于“插入”;若已有值,则覆盖arr=("${arr[@]:0:2}" "new" "${arr[@]:2}") 表示在索引 2 前插入
使用 unset 清除指定索引的元素,该位置变为空槽(不是自动前移):
unset arr[2] —— 删除第 3 个元素(索引从 0 开始)${arr[@]} 输出会跳过该位置,但 ${!arr[@]} 显示的下标仍包含缺口两种常见需求对应不同操作:
unset arr —— 完全删除数组变量,后续引用为未定义arr=() —— 清空内容但保留变量名,长度变为 0,可继续追加