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.