Dizi anahtarları listesi'ni kullanarak bunu yapabilirsiniz . Gönderen bash
adam sayfası:
${!name[@]}
${!name[*]}
Dizi anahtarlarının listesi . Ad bir dizi değişkeniyse, ada atanan dizi dizinleri (anahtarlar) listesine genişler. Ad bir dizi 0
değilse, ad ayarlanırsa genişler ve aksi halde null olur. Ne zaman @
kullanılır ve genişleme çift tırnak, ayrı bir sözcüğe her anahtar genişletir içinde görünür.
Örneğiniz için:
#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in "${!AR[@]}"; do
printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done
Bunun sonucu:
${AR[0]}=foo
${AR[1]}=bar
${AR[2]}=baz
${AR[3]}=bat
Bunun ardışık olmayan dizinler için de geçerli olduğunu unutmayın:
#!/bin/bash
AR=([3]='foo' [5]='bar' [25]='baz' [7]='bat')
for i in "${!AR[@]}"; do
printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done
Bunun sonucu:
${AR[3]}=foo
${AR[5]}=bar
${AR[7]}=bat
${AR[25]}=baz
"${array[*]}"
bunun yerine asla istemediğinizi de unutmayın"${array[@]}"
. Az çok*
yerine kullanmak@
, onu bir dizi yerine bir dize olarak ele alır.