Bash脚本中如何实现列表(数组)的常用基础操作?
Bash 列表类操作实现方案
Bash 原生支持一维索引数组,完全可以满足你需要的列表操作需求,以下为各功能的实现示例,兼容 Bash 4.0 及以上版本。
注意:所有涉及数组取值、遍历的操作,建议给${数组名[@]}套双引号,避免元素包含空格时出现拆分异常
1. 创建空列表(空数组)
直接通过空括号初始化即可:
# 方式1:直接初始化空数组 my_list=() # 方式2:先声明数组类型再初始化 declare -a my_list
2. 向列表中追加元素
使用+=运算符即可实现单个或多个元素追加:
# 追加单个元素 my_list+=("元素1") # 一次性追加多个元素 my_list+=("元素2" "元素3" "带空格的 元素4")
3. 检查列表是否为空
通过判断数组元素总长度是否为0实现:
if [ ${#my_list[@]} -eq 0 ]; then echo "当前列表为空" else echo "当前列表共有 ${#my_list[@]} 个元素" fi
其中${#my_list[@]}语法用于获取数组的元素总个数。
4. 删除列表中的指定元素
通过遍历筛选非目标元素的方式实现,支持删除所有匹配的指定元素,兼容带空格的元素:
# 定义要删除的目标元素 target="元素2" # 临时数组存储需要保留的元素 temp_list=() for elem in "${my_list[@]}"; do if [ "$elem" != "$target" ]; then temp_list+=("$elem") fi done # 覆盖原数组完成删除 my_list=("${temp_list[@]}")
5. 索引访问实现「跳转至下一个」逻辑
Bash 数组默认从0开始编号,通过索引加减即可实现跳转,注意提前判断索引合法性:
# 初始化当前访问索引,比如从第1个元素(索引0)开始 current_idx=0 # 计算下一个元素的索引 next_idx=$((current_idx + 1)) # 判断下一个索引是否在合法范围内 if [ $next_idx -lt ${#my_list[@]} ]; then # 读取下一个元素 next_elem=${my_list[$next_idx]} echo "下一个元素为:$next_elem" # 更新当前索引为下一个索引,完成跳转 current_idx=$next_idx else echo "已到达列表末尾,无下一个元素" fi
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

