You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中获取数组除当前循环索引元素外的其余元素

Bash数组遍历:排除当前索引元素生成新数组

方法一:数组切片拼接(高效简洁)

直接利用Bash的数组切片特性,将当前索引前后的元素拼接成新数组:

a=(1 2 3 4 5)

for index in "${!a[@]}"
do
    # 拼接当前索引之前和之后的元素切片
    b=("${a[@]:0:$index}" "${a[@]:$((index + 1))}")
    echo "${b[@]}"
done

代码说明:

  • ${!a[@]}:获取数组a的所有索引(此处为0 1 2 3 4)
  • ${a[@]:0:$index}:截取数组从第0位开始、长度为index的元素,即当前索引之前的所有元素
  • ${a[@]:$((index + 1))}:截取数组从index+1位开始到末尾的所有元素
  • 将两部分切片组合,得到排除当前索引元素的新数组b

方法二:循环过滤索引(直观易懂)

通过双层循环遍历所有索引,跳过当前要排除的索引,逐个收集元素:

a=(1 2 3 4 5)

for current_idx in "${!a[@]}"
do
    b=()
    # 遍历所有索引,筛选出非当前索引的元素
    for idx in "${!a[@]}"
    do
        if [ "$idx" -ne "$current_idx" ]; then
            b+=("${a[$idx]}")
        fi
    done
    echo "${b[@]}"
done

输出结果

两种方法都会输出你期望的内容:

1 2 3 4
1 2 3 5
1 2 4 5
1 3 4 5
2 3 4 5

内容的提问来源于stack exchange,提问作者AhmFM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:37:05