| Unix-shells (zoals bash, zsh, sh) hebben geen arrays op dezelfde manier als talen op een hoger niveau, zoals Python of C++. Ze verwerken arrays op een minder gestructureerde manier, meestal met behulp van door witruimte gescheiden tekenreeksen of speciale technieken. Zo kunt u werken met array-achtige structuren in verschillende Unix-shellcontexten:
1. Door witruimte gescheiden tekenreeksen:
Dit is de eenvoudigste methode. Je slaat elementen feitelijk op als een enkele string, gescheiden door spaties (of andere scheidingstekens die je kiest). Om toegang te krijgen tot individuele elementen is stringmanipulatie vereist.
``` bash
my_array="appel-banaan-kers"
Toegang tot het eerste element (uitgaande van scheiding van de ruimte):
first_element="${my_array%% *}" #Verwijdert alles vanaf de eerste spatie.
echo "$first_element" # Uitvoer:appel
Toegang tot het tweede element:
second_element="${my_array#* }" #Verwijdert alles tot aan de eerste spatie.
second_element="${second_element%% *}" #Verwijdert alles vanaf de eerste spatie
echo "$second_element" # Uitvoer:banaan
#Itereren (minder efficiënt):
voor fruit in $my_array; Doen
echo "$fruit"
klaar
```
Beperkingen: Deze aanpak is foutgevoelig als array-elementen zelf spaties bevatten.
2. Arrays gebruiken in bash (en andere shells met array-ondersteuning):
Bash (en enkele andere moderne shells) bieden robuustere array-ondersteuning.
``` bash
Declareer een array
my_array=("appel" "banaan" "kers")
Toegang tot elementen:
echo "${my_array[0]}" # Uitvoer:apple
echo "${my_array[1]}" # Uitvoer:banaan
De arraylengte verkrijgen:
echo "${#my_array[@]}" # Uitvoer:3
Itererend:
voor i in "${!my_array[@]}"; do #Itereren door indexen
echo "${mijn_array[i]}"
klaar
Of herhaal rechtstreeks de elementen:
voor fruit in "${my_array[@]}"; Doen
echo "$fruit"
klaar
#Elementen toevoegen:
mijn_array+=("datum")
echo "${my_array[3]}" #Uitvoer:datum
#Toevoegen aan array:
my_array+=(druivensinaasappel)
#Elementen verwijderen (minder eenvoudig, vereist verschuiving):
schakel 'my_array[1]' uit #verwijdert element op index 1 (banaan)
#Merk op dat indices niet automatisch naar beneden verschuiven. Er is geen ingebouwde verschuiving na verwijdering.
Druk de gewijzigde array af:
voor fruit in "${my_array[@]}"; Doen
echo "$fruit"
klaar
```
Belangrijke overwegingen:
* Citaat: Citeer altijd arrayvariabelen (bijvoorbeeld `"${my_array[@]}"`) om het splitsen van woorden en het samenvoegen van woorden te voorkomen, wat tot onverwacht gedrag kan leiden. Dit is vooral van cruciaal belang wanneer array-elementen spaties of speciale tekens kunnen bevatten.
* Index 0: Arrays in bash zijn 0-geïndexeerd, wat betekent dat het eerste element op index 0 staat.
* Shell-specifiek: De syntaxis en functies die beschikbaar zijn voor arrays kunnen enigszins variëren, afhankelijk van de specifieke shell die u gebruikt (bash, zsh, ksh, enz.).
3. Opdrachtregelprogramma's gebruiken voor array-achtige bewerkingen:
Voor complexere array-manipulaties (sorteren, filteren, etc.) zul je het vaak efficiënter vinden om externe opdrachtregelhulpprogramma's te gebruiken, zoals `awk`, `sed` of `sort`. Deze tools blinken uit in tekstverwerking, die kan worden aangepast om te werken met gegevens die zijn gestructureerd als gescheiden tekenreeksen.
Om bijvoorbeeld de elementen van een door spaties gescheiden tekenreeks te sorteren:
``` bash
my_array="appel-banaan-kers"
echo "$mijn_array" | tr '' '\n' | sorteer | tr '\n' ' '
```
Samenvattend:hoewel Unix-shells geen ingebouwde, rijke array-structuren hebben zoals andere talen, is de array-ondersteuning van bash geschikt voor veel taken. Overweeg voor complexe manipulaties de kracht van tekstverwerkingshulpprogramma's te benutten. Vergeet niet om uw arrayvariabelen altijd correct te citeren om mogelijke fouten te voorkomen. |