遍历关联数组组

Looping over associative array groups

我有一个关联数组asc,其键采用以下形式

asc[1-0]=dlc[0]
asc[2-1]=dlc[1]
asc[3-2]=dlc[2]
asc[1-3]=dlc[3]
asc[2-4]=dlc[4]
asc[3-5]=dlc[5]
asc[1-6]=dlc[6]
asc[2-7]=dlc[7]
asc[3-8]=dlc[8]
asc[1-9]=dlc[9]
asc[2-10]=dlc[10]
asc[3-11]=dlc[11]
asc[1-12]=dlc[12]
asc[2-13]=dlc[13]

...

我想在调用函数时按第一个数字对元素进行分组 fn

loop over i
  fn asc[i-*]  $ pass all elements with i as first number

您必须遍历关联数组的键并构建与所需键子集关联的值的普通数组。

for i in 1 2 3; do
    group=()
    for k in "${!asc[@]}"; do
        [[ $k = $i-* ]] || continue
        group+=("${asc[$k]}")
    done
    fn "${group[@]}"
done