Leer hoe u Bash-arrays kunt declareren, manipuleren en verwijderen.

Arrays zijn gegevensopslagplaatsen die worden gebruikt om waarden vast te houden die een bepaalde relatie met elkaar hebben. In tegenstelling tot de meeste programmeertalen kunnen Bash-arrays waarden van verschillende gegevenstypen in dezelfde array opslaan.

Bash heeft twee soorten arrays: geïndexeerde arrays en associatieve arrays. Voor geïndexeerde arrays beginnen de indexen van 0 tot (n-1), zoals gebruikelijk is in de meeste talen. Arrays in Bash zijn echter schaars. Dit betekent dat u het (n-1)e array-element kunt toewijzen zonder dat u het (n-2)e element hebt toegewezen.

In deze tutorial leer je hoe je met arrays in Bash kunt werken. Laten we beginnen.

Arrays definiëren

Er zijn drie manieren waarop u arrays in Bash kunt definiëren. Net als bij Bash-variabelen moeten arrays bij het maken worden geïnitialiseerd. De enige uitzondering hierop is als u de verklaren trefwoord. U moet er ook voor zorgen dat er aan beide zijden van de toewijzingsoperator geen ruimte overblijft terwijl u de array initialiseert.

instagram viewer

De eerste methode is samengestelde toewijzing van waarden aan de arraynaam. Er zijn twee manieren om dit te doen:

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

Bij de eerste samengestelde toewijzing worden de waarden tussen de ronde haakjes opeenvolgend vanuit de index toegewezen [0] naar [3].

In het tweede geval worden de waarden echter toegewezen aan een index in de volgorde die de programmeur heeft aangegeven.

Verwant: Wat zijn omgevingsvariabelen in Linux? Alles wat u moet weten

Als je er goed op let arr2, zul je die index opmerken [2] werd weggelaten. De array wordt nog steeds gemaakt zonder dat er fouten optreden. Deze opdracht is eigenlijk een demonstratie van schaarse opslag in Bash-arrays, zoals we eerder hebben besproken.

Merk op dat er geen komma's staan ​​die de arraywaarden scheiden. De waarden worden eenvoudigweg gescheiden door spaties.

De tweede methode declareert de array indirect. U kunt gewoon beginnen met het toewijzen van waarden aan null-array-elementen:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

De derde manier is om de array expliciet te declareren met het trefwoord verklaren:

declare -a arrayName

Bewerkingen op arrays

Gebruik deze syntaxis om toegang te krijgen tot array-elementen: ${array[index]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Als u in plaats daarvan de hele array wilt afdrukken, gebruikt u de @ symbool als de

inhoudsopgave van ${array[index]}:

echo${fruits[@]}

Om het aantal elementen in de array te achterhalen, gebruikt u de # symbool zoals hieronder weergegeven:

echo ${#fruits[1]}

Mogelijk moet u ook array-elementen wijzigen. Zie het onderstaande voorbeeld om te zien hoe u dit doet. Het is vergelijkbaar met hoe u een nieuw element toevoegt. Het enige verschil is dat u een waarde vervangt door een index die al een waarde heeft.

fruits[1]=pears

Associatieve arrays

Een array met willekeurige waarden als sleutels wordt een associatieve array genoemd. Deze arrays worden gebruikt om gerelateerde sleutel-waardeparen op te slaan.

Verwant: Hoe u Bash-scripts kunt omzetten in klikbare apps met behulp van AppleScript

Om een ​​associatieve array te definiëren, moet u dit expliciet doen met behulp van het trefwoord verklaren.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

U kunt op dezelfde manier toegang krijgen tot een lidelement als geïndexeerde arrays:

echo${animal[lion]}

Als u alle waarden wilt afdrukken, kunt u de @ symbool zoals hieronder weergegeven:

echo${animal[@]}

Als u alle arraysleutels wilt afdrukken, kunt u de @ En ! symbolen zoals hieronder gedemonstreerd:

echo${!animal[@]}

Om het aantal elementen te vinden dat de associatieve array heeft, gebruikt u dezelfde syntaxis die u zou gebruiken voor geïndexeerde arrays (zoals gedemonstreerd in de laatste sectie).

Als u een array-item of de gehele array wilt verwijderen, gebruikt u de onderstaande syntaxis:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Met behulp van de printf-opdracht

Het is je misschien opgevallen dat dit hele artikel de echo opdracht om gegevens naar de shell uit te voeren. De echo commando werkt voor deze tutorial, maar heeft weinig functies en flexibiliteit als het gaat om tekenreeksopmaak.

echter, de afdrukkenf command biedt meer specifieke opmaakopties die Bash-scripting een fluitje van een cent maken. Het leren van de afdrukkenf -functie zal uw ervaring met het formatteren van tekenreeksen en de efficiëntie in Bash zeker verbeteren.