Introductie tot Bash-scripting
Alex Scriven
Data Scientist
Twee soorten arrays in Bash:
In Python: my_list = [1,3,2,4]
In R: my_vector <- c(1,3,2,4)
Een numeriek geïndexeerde array kun je in Bash op twee manieren maken.
declare -a my_first_array
my_first_array=(1 2 3)
Onthoud: geen spaties rond het gelijkteken!
Komma's scheiden in Bash geen array-elementen:
Dit is niet juist:
my_first_array=(1, 2, 3)
Dit is wel juist:
my_first_array=(1 2 3)
array[@]. Let op: in Bash gebruik je accolades rond de naam bij dit soort toegang.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Elementen benaderen met rechte haken.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Stel array-elementen in met indexnotatie.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ bij overschrijven van een index zoals $my_first_array[0]=999, dat werkt niet.Gebruik array[@]:N:M om een subset te slicen.
N is de startindex en M het aantal elementen.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Voeg toe aan een array met array+=(elements).
Bijv.:
my_array=(300 42 23 2 4 33 54 67 66)my_array+=(10) echo ${my_array[@]}
300 42 23 2 4 33 54 67 66 10
Wat gebeurt er zonder haakjes om wat je wilt toevoegen? Kijk mee.
Bijv.:
my_array=(300 42 23 2 4 33 54 67 66)
my_array+=10
echo ${my_array[@]}
30010 42 23 2 4 33 54 67 66
De string 10 wordt aan het eerste element geplakt. Niet wat we willen!
bash --version in de terminalIn Python:
my_dict = {'city_name': "New York", 'population': 14000000}
In R:
my_list = list(city_name = c('New York'), population = c(14000000))
Je maakt een associatieve array alleen met de declare-syntaxis (en hoofdletter -A).
Je kunt eerst declareren en dan toevoegen, of alles op één regel.
Laten we een associatieve array maken:
declare -A city_details # Eerst declarerencity_details=([city_name]="New York" [population]=14000000) # Elementen toevoegenecho ${city_details[city_name]} # Indexeer met key om de waarde te krijgen
New York
Je kunt ook in één regel een associatieve array maken en vullen
declare -A city_details=([city_name]="New York" [population]=14000000)
Toegang tot de 'keys' van een associatieve array met een !
echo ${!city_details[@]} # Geef alle keys terug
city_name population
Introductie tot Bash-scripting