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

Bash单键多值关联数组遍历方法求助

Bash关联数组一键多值的遍历方法

Bash的关联数组默认一个键只能存单个值,重复赋值会直接覆盖之前的内容,所以要实现一键多值,得把每个键对应的值做成数组(或者用分隔符拼接的字符串),再嵌套遍历。

方法一:嵌套数组(推荐,值含空格也适用)

先声明关联数组,每个键对应一个普通数组:

declare -A X
# 给s1赋值包含两个元素的数组
X[s1]=( "firstname" "secondname" )
X[s2]=( "surname" )
X[s3]=( "other" )

# 遍历关联数组的所有键
for key in "${!X[@]}"; do
    # 取出当前键对应的数组
    values=("${X[$key]}")
    # 逐个遍历数组元素并输出
    for val in "${values[@]}"; do
        echo "$key, $val"
    done
done

方法二:分隔符拼接字符串(适合值无特殊分隔符的场景)

如果值里没有特殊字符(比如|),可以把多个值用分隔符拼起来,遍历的时候再拆分:

declare -A X=(
    ['s1']="firstname|secondname"
    ['s2']="surname"
    ['s3']="other"
)

for key in "${!X[@]}"; do
    # 用|作为分隔符,把字符串拆成数组
    IFS='|' read -ra values <<< "${X[$key]}"
    for val in "${values[@]}"; do
        echo "$key, $val"
    done
done

两种方法运行后都会输出你想要的结果:

s1, firstname
s1, secondname
s2, surname
s3, other

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:02:46