你如何在n组中打破一个数组

Jas*_*ael 6 arrays bash

这类似于在特定数量的分隔符后添加'\n',但是,如果组中的元素是可编程的,则假设该数字.

我们有:

aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj,kkk,lll,mmm
g=4
Run Code Online (Sandbox Code Playgroud)

我们想要

aaa,bbb,ccc,ddd
eee,fff,ggg,hhh
iii,jjj,kkk,lll
mmm
Run Code Online (Sandbox Code Playgroud)

我们如何用bash实现这一目标?

我尝试了很多选择.这是最新的失败(tmp []是数组):

for e in ${tmp[@]}; do 
  for i in $(eval echo "{0..$groupsof}"); do 
    foo[$i]=$e; 
  done
done
Run Code Online (Sandbox Code Playgroud)

tha*_*guy 10

使用子字符串扩展."${array[@]:offset:length}"让你length开始元素offset:

#!/bin/bash

array=(aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm)
g=4

for((i=0; i < ${#array[@]}; i+=g))
do
  part=( "${array[@]:i:g}" )
  echo "Elements in this group: ${part[*]}"
done
Run Code Online (Sandbox Code Playgroud)