从包含相同长度列表的两个变量创建关联数组

Creating an associative array from two variables containing lists of same length

我有两个变量,称为变量 1 和变量 2, 一个包含名称列表,一个包含值列表,并且列表的长度相同。我将如何创建一个关联数组,其中名称列表中的第一个名称是数组中一项的键,值列表中的第一个值是该键的索引。例如

declare -A AgeDatabase
variable1=John Mary Sam
variable2=15 16 19

$ echo $AgeDatabase[John]
15
$ echo $AgeDatabase[Mary]
16
$ echo $AgeDatabase[Sam]
19

在这个例子中,我知道我可以手动设置这些值,但是我想自动设置值的过程,使用某种循环,我不确定如何以及任何帮助将不胜感激。

对列表使用数组:

#!/bin/bash
names=(John Mary Sam)
ages=(15 16 19)

declare -A AgeDatabase

for ((i=0; i<${#names[@]}; ++i)) ; do
    AgeDatabase[${names[i]}]=${ages[i]}
done

echo ${AgeDatabase[John]}

注意打印数组值和赋值给它们的语法。

declare -A AgeDatabase=( ["John"]="15" ["Mary"]="16" ["sam"]="19")

for age in "${!AgeDatabase[@]}"; do echo "$sound - ${AgeDatabase["$age"]}"; done