Deklarasikan array tetapi tidak mendefinisikannya?

14

Ada banyak panduan di luar sana yang menunjukkan cara mendeklarasikan dan mendefinisikan array

foo[0]=abc 
foo[1]=def

Apa yang saya coba capai adalah mendeklarasikan sebuah array tetapi tidak mendefinisikannya karena ia tidak harus segera didefinisikan, dalam sebagian besar bahasa pemrograman akan terlihat seperti ini

int bar[100];

Apakah ini mungkin dalam bahasa scripting shell?

Kutu buku komputer
sumber

Jawaban:

23

Anda dapat menentukan bahwa variabel adalah array dengan membuat array kosong, seperti:

var_name=()

var_name akan menjadi array seperti yang dilaporkan oleh

$ declare -p var_name
declare -a var_name='()'

Contoh:

var_name=()
for i in {1..10}; do
    var_name[$i]="Field $i of the list"
done
declare -p var_name
echo "Field 5 is: ${var_name[5]}"

yang menghasilkan sesuatu seperti ini:

declare -a var_name='([1]="Field 1 of the list" [2]="Field 2 of the list" [3]="Field 3 of the list" [4]="Field 4 of the list" [5]="Field 5 of the list" [6]="Field 6 of the list" [7]="Field 7 of the list" [8]="Field 8 of the list" [9]="Field 9 of the list" [10]="Field 10 of the list")'
Field 5 is: Field 5 of the list
kiri
sumber
minerz029, @am: ..dan bagaimana cara mendefinisikan elemen? Saya mencoba tetapi hanya bisa mendefinisikan / mengakses string tunggal .. contoh kecil untuk mendefinisikan dan mengakses nilai-nilai untuk variabel array akan menjadi besar ...
tepat
tahu itu .. Aku kehilangan kawat gigi ..
tepatnya
4

Selain cara di atas, kita juga bisa membuat array dengan mendeklarasikan pernyataan.

Pernyataan mendeklarasikan dengan opsi -a dapat digunakan untuk mendeklarasikan variabel sebagai array, tetapi itu tidak perlu. Semua variabel dapat digunakan sebagai array tanpa definisi eksplisit. Faktanya, tampaknya dalam arti tertentu, semua variabel adalah array, dan bahwa penugasan tanpa subskrip sama dengan penugasan ke "[0]". Deklarasi eksplisit dari sebuah array dilakukan dengan mendeklarasikan built-in:

declare -a ARRAYNAME

Array asosiatif dibuat menggunakan

declare -A name.

Atribut dapat ditentukan untuk variabel array menggunakan mendeklarasikan dan hanya builtin. Setiap atribut berlaku untuk semua anggota array.

Setelah Anda mengatur variabel array apa pun, Anda mengaksesnya sebagai berikut:

${array_name[index]}
saya
sumber
1

Ini sebenarnya sama dengan C. Di C, kita bisa mengambil array sesuai keinginan. Di sini, kita dapat mengambil array kosong dan kemudian meletakkan nilai apa pun.

bar=()

Simple For Loop untuk mengambil nilai dalam array itu dan mencetaknya:

bar=()
for ((i=0;i<10;i++));
do
    read bar[$i]  #Take Value in bar array
    echo bar[$i]
done

Semoga bermanfaat.

Maniruzzaman Akash
sumber
Apa masalah dalam jawabannya? Mengapa memilih?
Maniruzzaman Akash