次の連想配列を作成しました。
declare -A test_array
test_array[0,0]="1"
test_array[0,1]="A"
test_array[0,2]="11"
test_array[0,3]="AA"
test_array[1,0]="2"
test_array[1,1]="B"
test_array[1,2]="22"
test_array[1,3]="BB"
私が望むのは、最終要素のキー値を取得することです。この例では、1 は次の場所にあります。
test_array[1,3]="BB"
これを行う方法はありますか?
ありがとう
答え1
残念ながら、連想配列には「最終要素」はありません。
答え2
連想配列キーは与えられた順序で保存されません。この問題を解決する一般的な方法は、覚えたい順序でキーを保持する2番目のインデックス配列を使用することです。たとえば、配列は次のようになりますx
。
declare -a x
test_array[0,0]="1" x[${#x[*]}]='0,0'
test_array[0,1]="A" x[${#x[*]}]='0,1'
...
${#x[*]}
は配列の長さx
なので、上記の各行は配列の最後に新しい項目を追加しますx
(インデックス0、次に1、...)。
その後、その配列の最後の項目(インデックス長1)を使用してキーと値を取得できます。
echo ${x[${#x[*]}-1]}
echo ${test_array[${x[${#x[*]}-1]}]}