我有两个相同数目的子字符串,用定界符分隔。
我需要从子字符串创建键值对。
简短示例:输入:
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"
有可能吗?
可能不是您所期望的,但这有效:
while IFS=":" read -r key string1 <<<"$string1" \
&& IFS=":" read -r val string2 <<<"$string2"
do
hash[$key]="$val"
done