我有这样的代码——>
list=("kek" "lol")
dict+=(["memes"]=$list)
与数组,和字典(我猜)。例如,现在我想从列表中获取第二个索引,但是使用dictionary。
有点像echo ${dict[1]}
,但它不会输出任何东西,即使调用echo ${dict[0]}
,它也会输出kek
。所以我猜我在声明字典步骤上做错了什么…出于某种原因,我无法在谷歌上搜索有关这个问题的任何信息。
所以…我该怎么做?
关联数组的值总是一个标量。它不能是一个索引数组。您可以存储名称将数组(list
)放入字典中,并使用名称访问数组:
list=(kek lol)
dict+=([memes]=list) # Store name of array
declare -n plist=${dict[memes]} # Fetch the list
echo ${plist[0]} # Outputs kek
Nvm,你可以用这种方式声明字典dict+=(["memes"]="kek" "lol")
,它将工作,仍然有趣,如果它甚至可能通过变量声明它。我想我找不到一种方法,可以用键(key- memes)从字典中取出列表。使用"kek"获取列表值和"lol"。
那么,如果有人对我是如何通过键
将列表从字典中取出感兴趣的话declare -A dict
dict+=( ["memes"]="kek,lol" )
dict+=( ["memes2"]="kek2,lol2" )
for key in ${!dict[@]}
do
echo "key is: $key"
IFS=',' read -r -a list_dict <<< "${dict[$key]}"
for values_by_the_key in ${list_dict[@]}
do
echo "value: $values_by_the_key"
done
done
所以,基本上它的键值不是一个列表,只是一个字符串,然后被转换成列表…但是它可以工作!:)