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

Bash中如何解析哈希表键关联的数组并遍历输出?

在Bash中以数组名作为关联数组键,解析并遍历对应数组

我并非Bash/Shell脚本专家,需求是:使用数组变量名作为哈希表(关联数组)的键,遍历哈希表的键时,将其解析为实际数组,再遍历该数组并输出对应值。

原代码

arr1=(A B)
arr2=(C D)

declare -A arrmap
arrmap=(
    [arr1]="array 1"
    [arr2]="array 2"
)

for k in "${!arrmap[@]}";
do  
    for f in "${k[@]}";
        do echo "$k: $f";
    done
done

原代码输出

arr2: arr2
arr1: arr1

期望输出

A: array 1
B: array 1
C: array 2
D: array 2

问题原因

原代码中"${k[@]}"并未将k存储的数组名解析为实际数组,而是把字符串k当作数组名处理,因此只能输出字符串本身。

解决方法

for k in "${!arrmap[@]}"; do  
    eval a=\( \${${k}[@]} \)
    for f in "${a[@]}"; do 
        echo "$f: ${arrmap[$k]}";
    done
done

说明

  • 用eval将数组名k解析为实际数组的元素集合,赋值给临时数组a
  • 遍历临时数组a即可获取原数组的元素,再结合关联数组arrmap中对应键的值,输出符合预期的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:32:58