如何获取关联数组的最后一个键(字典)

时间:2016-12-02 10:52:08

标签: bash

如何在bash中访问关联数组的最后一个键?在这个例子中,我需要在$ last变量中使用“lot”。我找到了一种方法:How to get the keys and values of an associative array indirectly in Bash?。但它在下面的示例中没有按预期工作并返回此错误:

./test.sh: line 9: keys2: ${!$addict[@]}: must use subscript when assigning associative array

以下是此test.sh的内容:

declare -A addict=(
    ["foo"]="bar"
    ["few"]="baz"
    ["lot"]="pot"
)

index_last=$(( ${#addict[@]} - 1 ))
 eval 'declare -A keys2=(${!$addict[@]})'
last="${keys2[$index_last]}"

echo "$keys2"
echo "$index_last"
echo "$last"

1 个答案:

答案 0 :(得分:1)

虽然Tom Fenech绝对正确地说 密钥是无序的,因此“最后一个密钥”的概念没有意义,您可以通过将eval更改为

来避免错误
keys2=(${!addict[@]})

看看你得到了什么。查看declare -p addict可能也很有启发性。