Introduktion till Bash-skriptning
Alex Scriven
Data Scientist
Två typer av arrayer i Bash:
I Python: my_list = [1,3,2,4]
I R: my_vector <- c(1,3,2,4)
En numeriskt indexerad array kan skapas på två sätt i Bash.
1. Deklarera utan att lägga till element
declare -a my_first_array
2. Skapa och lägg till element samtidigt
my_first_array=(1 2 3)
Kom ihåg – inga mellanslag runt likhetstecknet!
Kommatecken används inte för att separera arrayelement i Bash:
Detta är inte korrekt:
my_first_array=(1, 2, 3)
Detta är korrekt:
my_first_array=(1 2 3)
array[@]. Observera att Bash kräver klammerparenteser runt arrayens namn för att komma åt dessa egenskaper.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Åtkomst till arrayelement sker med hakparenteser.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Ange arrayelement med indexnotation.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ när du skriver över ett index, t.ex. $my_first_array[0]=999 – det fungerar inte.Använd notationen array[@]:N:M för att 'skiva' ut en delmängd av arrayen.
N startindex och M är antal element som returneras.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Lägg till element i en array med array+=(elements).
Till exempel:
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
Vad händer om du inte lägger till parenteser runt det du vill lägga till? Vi ser.
Till exempel:
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
Strängen 10 läggs bara till det första elementet. Inte vad vi vill!
bash --version i terminalenI Python:
my_dict = {'city_name': "New York", 'population': 14000000}
I R:
my_list = list(city_name = c('New York'), population = c(14000000))
En associativ array kan bara skapas med declare-syntaxen (och versalt -A).
Du kan antingen deklarera först och sedan lägga till element, eller göra allt på en rad.
Vi skapar en associativ array:
declare -A city_details # Declare firstcity_details=([city_name]="New York" [population]=14000000) # Add elementsecho ${city_details[city_name]} # Index using key to return a value
New York
Du kan också skapa och tilldela en associativ array på en rad
declare -A city_details=([city_name]="New York" [population]=14000000)
Hämta 'nycklarna' i en associativ array med !
echo ${!city_details[@]} # Return all the keys
city_name population
Introduktion till Bash-skriptning