Berdasarkan pada array asosiatif dalam skrip Bash, saya perlu mengulanginya untuk mendapatkan kunci dan nilai.
#!/bin/bash
declare -A array
array[foo]=bar
array[bar]=foo
Saya sebenarnya tidak mengerti cara mendapatkan kunci saat menggunakan for-in loop.
for i in a,b c_s,d ; do KEY=${i%,*}; VAL=${i#*,}; echo $KEY" XX "$VAL; done
Jawaban:
Tombol yang diakses menggunakan tanda seru:
${!array[@]}
, yang nilai diakses menggunakan${array[@]}
.Anda dapat mengulangi pasangan kunci / nilai seperti ini:
Perhatikan penggunaan tanda kutip di sekitar variabel dalam
for
pernyataan (ditambah penggunaan@
bukan*
). Ini diperlukan jika ada kunci yang memasukkan spasi.Kebingungan dalam jawaban lain berasal dari fakta bahwa pertanyaan Anda termasuk "foo" dan "bar" untuk kunci dan nilainya.
sumber
array=(${!hash[@]})
array=("${!hash[@]}")
for i in "${!$1[@]}"
?declare -A aa; aa['A']=a1; aa['B']=b2; aa['C']=c3; foo () { declare -n assoc=$1; for key in "${!assoc[@]}"; do echo "Key: $key; Value: ${assoc[$key]}"; done; }; foo aa
. Silakan lihat BashFAQ / 006 untuk beberapa informasi penting.Anda dapat mengakses kunci dengan
${!array[@]}
:Kemudian, beralih ke pasangan kunci / nilai mudah:
sumber
Gunakan fungsi tingkat tinggi ini untuk mencegah piramida malapetaka
contoh:
sumber
sumber