Bash vs Python для DevOps инженеров и системных администраторов
Inhoudsopgave:
- Bash-reeksen
- Bash-arrays maken
- Numeriek geïndexeerde arrays maken
- Associatieve arrays maken
- Array-bewerkingen
- Referentie-elementen
- Matrixlengte
- Loop door de array
- Voeg een nieuw element toe
- Verwijder een element
- Conclusie
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}"
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}
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}"
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-terminalMicrosoft Research Asia host poorten op 10 jaar Bash
Microsoft Research Asia is in 1998 van een dozijn mensen gegroeid tot meer dan 350 een decennium later.
Bash uitvoeren op Ubuntu op Windows 10
Als u Windows Subsystem voor Linux inschakelt, kunt u Bash op Ubuntu uitvoeren op Windows 10, Bash-scripts , Linux-opdrachtregelprogramma`s, Linux-eerste hulpprogramma`s.
Bash voor lus
Er zijn 3 basis lusconstructies in Bash scripting, voor lus, terwijl lus en tot lus. In deze tutorial behandelen we de basisprincipes van for loops in Bash, evenals de break- en continue-instructies om de loop van een loop te wijzigen.







