Assosiatiivisten taulukoiden käyttö

Bash:
Assosiatiivisten taulukoiden käyttö

Kuinka:

Aloita julistamalla Bashissa assosiatiivinen taulukko:

declare -A my_array

Sen jälkeen voit alkaa täyttää sitä arvoilla käyttäen merkkijonoja avaimina:

my_array["name"]="Linux Journal"
my_array["topic"]="Ohjelmointi"

Elementtiin pääsee käsiksi käyttämällä sen avainta:

echo ${my_array["name"]}  # Tulostaa: Linux Journal

Avainten ja arvojen iteroiminen on myös suoraviivaista:

for key in "${!my_array[@]}"; do
    echo "$key: ${my_array[$key]}"
done

Näytetuloste voisi näyttää tältä:

name: Linux Journal
topic: Ohjelmointi

Lisätäksesi tai muokataksesi elementtejä, määritä arvo avaimelle samalla tavalla kuin alustavassa täyttämisessä:

my_array["lukijat"]="Sinä"

Ja elementin poistamiseen käytä unset:

unset my_array["topic"]

Syväsukellus

Assosiatiiviset taulukot otettiin käyttöön Bashin versiossa 4.0, mikä tekee niistä suhteellisen uuden lisäyksen kieleen. Ennen niiden käyttöönottoa ei-kokonaislukuindeksilla varustettujen taulukoiden käsittely oli hankalaa, usein vaatien kiertotapoja tai ulkoisia työkaluja kuten awk tai sed.

Pinnan alla Bash toteuttaa assosiatiiviset taulukot hajautustauluja käyttäen. Tämä toteutus mahdollistaa tehokkaan avainhaun, joka pysyy melko vakiona riippumatta taulukon koosta, kriittinen ominaisuus käsikirjoituksen suorituskyvyssä.

Vaikka assosiatiiviset taulukot Bashissa tuovat paljon tehoa ja joustavuutta kuoriskriptaukseen, ne tulevat omien rajoitustensa kanssa, kuten se, että niiden käyttö on hieman kömpelöä verrattuna korkean tason kielien, kuten Pythonin tai JavaScriptin, taulukoihin. Monimutkaisten datan käsittelytehtävien osalta voi silti olla harkitsemisen arvoista käyttää ulkoisia työkaluja tai kieliä, jotka soveltuvat tehtävään paremmin.

Kuitenkin monille tyypillisille skriptaus tehtäville assosiatiiviset taulukot tarjoavat arvokkaan työkalun Bash-ohjelmoijan työkalupakkiin, mahdollistaen luettavampia ja ylläpidettävämpiä skriptejä sallimalla merkityksellisten merkkijonoavainten käytön numeeristen indeksien sijaan.