Bash:
Gebruik van associatieve arrays
Hoe te gebruiken:
Allereerst, verklaar een associatieve array in Bash:
declare -A my_array
Vervolgens kun je het beginnen te vullen met waarden, door strings als sleutels te gebruiken:
my_array["name"]="Linux Journal"
my_array["topic"]="Programmeren"
Om een element te benaderen, gebruik je de sleutel:
echo ${my_array["name"]} # Geeft uit: Linux Journal
Itereren over sleutels en waarden is ook eenvoudig:
for key in "${!my_array[@]}"; do
echo "$key: ${my_array[$key]}"
done
Een voorbeelduitvoer zou er zo uit kunnen zien:
name: Linux Journal
topic: Programmeren
Om elementen toe te voegen of te wijzigen, wijs je gewoon een waarde toe aan een sleutel, op een soortgelijke manier als de initiële vulling:
my_array["readers"]="Jij"
En om een element te verwijderen, gebruik unset
:
unset my_array["topic"]
Diep Duiken
Associatieve arrays werden geïntroduceerd in Bash versie 4.0, waardoor ze een relatief recente toevoeging aan de taal zijn. Voor hun introductie was het omgaan met niet-integer index arrays lastig, vaak vereisend omweggetjes of externe tools zoals awk
of sed
.
Onder de motorkap implementeert Bash associatieve arrays met behulp van hash tabellen. Deze implementatie maakt een efficiënte sleutelopzoeking mogelijk, die vrij constant blijft ongeacht de grootte van de array, een cruciaal kenmerk voor prestaties in scriptuitvoering.
Hoewel associatieve arrays in Bash veel kracht en flexibiliteit bieden aan shell-scripting, komen ze met hun eigen set beperkingen, zoals enigszins onhandiger zijn om mee te werken in vergelijking met arrays in hogere programmeertalen zoals Python of JavaScript. Voor complexe datamanipulatietaken kan het nog steeds het overwegen waard zijn om externe tools of talen te gebruiken die beter geschikt zijn voor de klus.
Echter, voor veel typische scripttaken bieden associatieve arrays een waardevol hulpmiddel in de toolkit van de Bash-programmeur, waardoor scripts leesbaarder en onderhoudbaarder worden door het toestaan van het gebruik van betekenisvolle string sleutels in plaats van numerieke indexen.