2016-12-02 115 views
1

如何獲得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" 
+6

鍵是無序的,所以「最後一個鍵」的概念沒有意義。相關:http://stackoverflow.com/q/29161323/2088135 –

+2

你爲什麼使用eval? – 123

回答

1

雖然湯姆·芬內克是絕對正確的說 鍵是無序的,所以「最後鍵」的概念,並沒有真正意義,你可以通過改變eval行至

keys2=(${!addict[@]}) 
避免錯誤

並看看你得到什麼。它也可能是照亮看到declare -p addict

相關問題