Zoals de meeste programmeertalen, hebben bash-scripts soms te maken met een lijst met gerelateerde waarden. De eenvoudigste vorm is de standaardarray.

In bash is array-programmering heel anders, vooral als het gaat om syntaxis. Bash-arrays zijn ook strikt eendimensionaal, maar ze hebben nog steeds veel toepassingen.

De basissyntaxis van Bash-arrays

Het maken van een array in bash is eenvoudig. U kunt een hele array initialiseren met haakjes, bijvoorbeeld:

city=(Londen Parijs Milaan "New York")

(Je kunt alle code van dit stadsvoorbeeld vinden in deze GitHub Gist.)

Dit creëert een array met vier elementen, geïndexeerd van 0 tot 3. Merk op dat de vierde waarde een tekenreeks tussen aanhalingstekens is die uit twee woorden bestaat. U moet waarden met spaties citeren om te verduidelijken dat het geen afzonderlijke waarden zijn.

U kunt toegang krijgen tot een enkel element met behulp van de haakjessyntaxis die in alle programmeertalen gebruikelijk is:

stad[2]

Aangezien dit bash is, heb je een aantal verfijningen nodig om de waarde daadwerkelijk in een expressie te gebruiken:

instagram viewer
  • U moet het dollarteken ($) naar de variabelenaam.
  • U moet ook een beugel gebruiken ({}) om de naam van de variabele ondubbelzinnig te maken. Standaard zal bash behandelen $stad[2] als een variabele met de naam stad. Voeg accolades toe om bash te vertellen om de haakjes en het indexnummer ook te evalueren.

De standaard bash-arraytoegangssyntaxis is dan:

${variable_name[index]}

Hier is een compleet voorbeeld:

#!/bin/bash

city=(Londen Parijs Milaan "New York")
echo ${city[3]}

# New York

In plaats van een array in één keer te initialiseren, kunt u deze stap voor stap toewijzen. Dit script is een langer equivalent van het vorige voorbeeld:

#!/bin/bash

city[0]=Londen
stad[1]=Parijs
stad[2]=Milaan
stad[3]="New York"
echo ${city[3]}

# New York

Merk op dat u in beide gevallen moet oppassen dat u geen spatie toevoegt rond het gelijkteken. “city[0] = London”, met spaties rond het gelijkteken, zal een fout genereren.

Meer toepassingen voor bash-arrays

Arrays zijn perfect voor het opslaan van gerelateerde gegevens. Hier is een (zeer beperkt) shellscript om de vierkantswortel van een getal te krijgen:

#!/bin/bash

sqrt[1]=1
sqrt[4]=2
sqrt[9]=3
sqrt[16]=4
sqrt[25]=5

echo ${sqrt[$1]}

Merk op dat het script de waarde. gebruikt $1 als de matrixindex. $1 vertegenwoordigt het eerste opdrachtregelargument dat het script ontvangt, dus u kunt dit script als volgt uitvoeren:

$ ./sqrt.sh 9
3

U bent misschien op de hoogte van de $(cmd) syntaxis om een ​​opdracht uit te voeren en de uitvoer in een variabele op te slaan. Je kunt dit combineren met de array-initialisatiesyntaxis om een ​​array met bestanden te laten werken:

arr=( $(ls) )

Een array is vaak een perfecte datastructuur voor iteratie en Bash is geen uitzondering. U kunt door een array lopen om elk element af te drukken of om een ​​bewerking op elk lid uit te voeren.

U kunt een array adresseren in a voor.. in lus, om de inhoud ervan te herhalen. Hier is bijvoorbeeld een eenvoudige lus die het aantal regels in elk bestand in de array afdrukt arr:

voor bestand in "${arr[@]}"; doen
wc -l "$bestand"
klaar

# 3 omgevingen
# 547 httpd.conf
# ...

Merk op dat dit patroon gebruik maakt van de @ symbool om alle elementen uit de array op te halen.

Meer Bash Array-syntaxis

U kunt het aantal items in een array als volgt verkrijgen:

echo ${#city[@]}

# 4

U kunt als volgt een nieuw element aan het einde van een standaardarray toevoegen:

arr+=(4)

Dus om een ​​vijfde stad aan de lijst toe te voegen:

stad+=(Rome)
echo ${city[@]}

# Londen Parijs Milaan New York Rome

Om een ​​stuk van een array te extraheren, kunt u een syntaxis gebruiken die de slice-bewerking van veel andere talen benadert:

${arr[@]:s: n}

Deze syntaxis retourneert een deel van de array dat begint op positie s en bevattende n artikelen. U kunt de weglaten :n onderdeel om alle items uit te halen s tot het einde van de lijst.

echo ${city[@]:2:2}
# Milaan New York

echo ${city[@]:3}
# New York Rome

Bash heeft veel functies, het is alleen even leren

Arrays in bash kunnen beperkingen hebben, maar ze bieden dezelfde basisfunctionaliteit als de meeste programmeertalen. Hoewel bash in het verleden alleen eenvoudige eendimensionale arrays heeft ondersteund, veranderen de tijden. De nieuwste versie van bash, 4, ondersteunt associatieve arrays en negatieve array-indexering.

Welke versie van bash je ook gebruikt, het is belangrijk om de nuances ervan te begrijpen. Zelfs de normale syntaxis van variabelen heeft tal van eigenaardigheden.

Bash-variabelen uitgelegd: een eenvoudige handleiding met voorbeelden

Lees volgende

DelenTweetenDelenE-mail

Gerelateerde onderwerpen

  • Programmeren
  • Linux
  • Programmeren
  • Linux Bash Shell
  • Scripting

Over de auteur

Bobby Jack (71 artikelen gepubliceerd)

Bobby is een technologie-enthousiasteling die bijna twee decennia als softwareontwikkelaar heeft gewerkt. Bij MUO is hij de Junior Editor voor de sectie Programmeren. Hij is gepassioneerd door gaming, werkt als hoofdredacteur bij Switch Player Magazine en is ondergedompeld in alle aspecten van online publiceren en webontwikkeling.

Meer van Bobby Jack

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren