Saya menggunakan array asosiatif dalam skrip saya, oleh karena itu saya biasa mendeklarasikannya dengan
typeset -A <array_name>
perintah, dan itu berfungsi dengan baik di bash Prompt
Tetapi ketika saya menggunakannya dalam skrip saya, saya mendapatkan kesalahan berikut
typeset: -A: invalid option
typeset: usage: typeset [-afFirtx] [-p] name[=value] ...
Solusi alternatif juga bisa saya terima.
SIDENOTE:Saya mencoba mengeset -a tetapi mendeklarasikan array yang diindeks. Tapi saya ingin array asosiatif.
Jawaban yang Diterima:
Itu adalah kesalahan yang dihasilkan oleh Bash 3 untuk typeset -A
. Array asosiatif ditambahkan di Bash 4, dan tidak di Bash 3.2 dan sebelumnya.
Tampaknya skrip Anda dijalankan dengan versi Bash yang berbeda dari yang Anda gunakan sebagai Shell Anda. Jika Anda menggunakan mesin yang sama dalam kedua kasus, Anda memiliki beberapa versi yang diinstal dan mungkin dapat memilih satu dengan jalur yang berbeda. Jika Anda menggunakan mesin lain yang menjalankan skrip, Anda mungkin dapat menginstal versi yang lebih baru, tetapi jika tidak, Anda kurang beruntung untuk mendapatkan dukungan langsung di Bash.
zsh
mendukung array asosiatif sejak versi yang jauh lebih lama, jadi jika Anda memilikinya, Anda mungkin dapat mem-porting skrip Anda tanpa terlalu banyak pekerjaan. Jika Anda tidak dapat melakukannya, Anda dapat memalsukannya dengan array biasa dan grep
, atau menggunakan ${[email protected]}
dan satu set variabel biasa, yang tersedia di versi Bash yang lebih lama. ${[email protected]}
memperluas ke nama semua variabel yang namanya dimulai dengan prefix
, yang dapat Anda gunakan dalam kombinasi dengan beberapa variabel prefix_key1
, prefix_another
untuk mendapatkan sebagian besar perilaku array asosiatif.