Bash:将两个字符串直接拆分为关联数组

问题描述 投票:2回答:1

我有两个相同数目的子字符串,用定界符分隔。

我需要从子字符串创建键值对。

简短示例:输入:

firstString='00011010:00011101:00100001'
secondString='H:K:O'
delimiter=':'

所需结果:

${translateMap['00011010']} -> 'H'
${translateMap['00011101']} -> 'K'
${translateMap['00100001']} -> 'O'

所以,我写道:

IFS="$delimiter" read -ra fromArray <<< "$firstString"
IFS="$delimiter" read -ra toArray <<< "$secondString"
declare -A translateMap

curIndex=0
for from in "${fromArray[@]}"; do
    translateMap["$from"]="${toArray[curIndex]}"
    ((curIndex++))
done

是否有任何方法可以直接从2个字符串创建关联数组而无需不需要的数组和循环?类似于:

IFS="$delimiter" read -rA translateMap["$(read -ra <<< "$firstString")"] <<< "$secondString"

有可能吗?

bash split associative-array
1个回答
0
投票

可能不是您所期望的,但这有效:

while IFS=":" read -r key string1 <<<"$string1" \
   && IFS=":" read -r val string2 <<<"$string2"
do
   hash[$key]="$val"
done
© www.soinside.com 2019 - 2024. All rights reserved.