Saya ingin mengakses variabel indeks array sambil mengulang melalui array di skrip bash shell saya.
myscript.sh#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${AR[*]}; do
echo $i
done
Hasil dari skrip di atas adalah:
foo
bar
baz
bat
Hasil yang saya cari adalah:
0
1
2
3
Bagaimana cara mengubah skrip saya untuk mencapai ini?
bash
shell
shell-script
Mowzer
sumber
sumber
"${array[*]}"
bukan"${array[@]}"
. Menggunakan*
alih-alih@
kurang lebih memperlakukannya sebagai string, bukan array.Jawaban:
Anda dapat melakukan ini menggunakan Daftar kunci array . Dari
bash
halaman manual:Sebagai contoh Anda:
Ini menghasilkan:
Perhatikan bahwa ini juga berfungsi untuk indeks yang tidak berurutan:
Ini menghasilkan:
sumber
printf "$i=(${AR[i]})\n"
atauecho "$i=(${ARi]})"
keduanya memberikan sedikit tambahan dengan menunjukkan cara mendapatkan kunci & var tetapi secara tegasecho "$i"
akan menjawab OP. Sisanya adalah "bash fu" :)Tambahan untuk jawaban jordanm Anda juga dapat melakukan
C
loop seperti dibash
:sumber
Anda dapat melakukan sesuatu seperti ini:
keluaran:
sumber