如何在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"
答案 0 :(得分:1)
虽然Tom Fenech绝对正确地说
密钥是无序的,因此“最后一个密钥”的概念没有意义,您可以通过将eval
更改为
keys2=(${!addict[@]})
看看你得到了什么。查看declare -p addict
可能也很有启发性。