Android

Bash-arrays

Bash vs Python для DevOps инженеров и системных администраторов

Bash vs Python для DevOps инженеров и системных администраторов

Inhoudsopgave:

Anonim

Arrays zijn een van de meest gebruikte en fundamentele gegevensstructuren. Je kunt denken dat een array een variabele is waarin meerdere variabelen kunnen worden opgeslagen., bespreken we de Bash-arrays en leggen we uit hoe je ze kunt gebruiken in je Bash-scripts.

Bash-reeksen

Bash ondersteunt eendimensionale numeriek geïndexeerde en associatieve arrays-typen. Numerieke arrays worden aangeduid met gehele getallen en associatieve verwijzingen met behulp van tekenreeksen.

Numeriek geïndexeerde arrays zijn vanaf het einde toegankelijk met behulp van negatieve indices, de index van -1 verwijst naar het laatste element. De indices hoeven niet aaneengesloten te zijn.

In tegenstelling tot de meeste programmeertalen hoeven Bash-arrayelementen niet van hetzelfde gegevenstype te zijn. U kunt een array maken die zowel tekenreeksen als getallen bevat.

Bash ondersteunt geen multidimensionale arrays en u kunt geen array-elementen hebben die ook arrays zijn.

Er is geen limiet op het maximale aantal elementen dat in een array kan worden opgeslagen.

Bash-arrays maken

Arrays in Bash kunnen op verschillende manieren worden geïnitialiseerd.

Numeriek geïndexeerde arrays maken

Bash-variabelen zijn niet getypeerd, elke variabele kan worden gebruikt als een geïndexeerde array zonder deze aan te geven.

Gebruik de ingebouwde declaratie om een ​​array expliciet te declareren:

declare -a array_name

Een manier om een ​​geïndexeerde array te maken, is door het volgende formulier te gebruiken:

array_name=value_1 array_name=value_2 array_name=value_n

Waar index_* een positief geheel getal is.

Een andere manier om een ​​numerieke array te maken, is door de lijst met elementen tussen haakjes op te geven, gescheiden door lege ruimte:

array_name=(element_1 element_2 element_N)

Wanneer de array wordt gemaakt met behulp van het bovenstaande formulier, begint de indexering op nul, dwz het eerste element heeft een index van 0 .

Associatieve arrays maken

In tegenstelling tot numeriek geïndexeerd, moeten de associatieve arrays worden aangegeven voordat ze kunnen worden gebruikt.

Om een ​​associatieve array aan te geven, gebruikt u de ingebouwde declare met de optie -A (hoofdletters):

declare -A array_name

Associatieve arrays kunnen worden gemaakt met behulp van de volgende vorm:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Waar index_* elke tekenreeks kan zijn.

U kunt ook een associatieve array maken met behulp van het onderstaande formulier:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Array-bewerkingen

De syntaxis van Bash-arrays lijkt in het begin misschien een beetje vreemd, maar het is logischer als je dit artikel leest.

Referentie-elementen

Om naar een enkel element te verwijzen, moet u de elementenindex kennen.

Naar elk element kan worden verwezen met de volgende syntaxis:

${array_name} De syntaxis voor toegang tot een array-element is vergelijkbaar met de syntaxis van de meeste programmeertalen. De accolades ${} zijn vereist om de exploitanten van shell-bestandsuitbreiding te voorkomen.

Laten we het element afdrukken met index van 1 :

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Het enige verschil tussen @ en * is wanneer het formulier ${my_array} tussen dubbele aanhalingstekens staat. In dit geval wordt * uitgebreid tot een enkel woord waar matrixelementen worden gescheiden door een spatie. @ breidt elk array-element uit naar een afzonderlijk woord. Dit is vooral belangrijk wanneer u het formulier gebruikt om door matrixelementen te analfabeten.

Om de toetsen van de array af te drukken, voegt u de ! operator vóór de arraynaam:

${!array_name}

Hier is een voorbeeld:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Matrixlengte

Gebruik de volgende vorm om de lengte van een array te achterhalen:

${#array_name} De syntaxis is hetzelfde als bij het verwijzen naar alle elementen met toevoeging van het # -teken vóór de arraynaam.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Loop door de array

De meest gebruikelijke manier om elk item in een array te herhalen is door de for-lus te gebruiken:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

De bovenstaande code doorloopt de array en drukt elk element op een nieuwe regel af:

Hydrogen Helium Lithium Beryllium

Hier is een voorbeeld van het afdrukken van alle sleutels en waarden:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Een andere manier om een ​​array te doorlopen is om de lengte van de array te bepalen en de lus in C style :

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Voeg een nieuw element toe

Gebruik het volgende formulier om een ​​nieuw element aan een bash-array toe te voegen en de index ervan op te geven:

my_array="New Element"

Hier is een voorbeeld:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Een andere manier om een ​​nieuw element aan een array toe te voegen zonder de index op te geven, is door de operator += gebruiken. U kunt een of meerdere elementen toevoegen:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Verwijder een element

Om een ​​enkel element te verwijderen, moet u de elementenindex kennen. Een element kan worden verwijderd met de opdracht unset :

unset my_array

Laten we een voorbeeld bekijken:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

Conclusie

We hebben uitgelegd hoe u numeriek geïndexeerde en associatieve arrays kunt maken. We hebben ook laten zien hoe u de arrays doorloopt, de arraylengte berekent en elementen toevoegt en verwijdert.

bash-terminal