Introducere în Bash Scripting
Alex Scriven
Data Scientist
Două tipuri de tablouri în Bash:
În Python: my_list = [1,3,2,4]
În R: my_vector <- c(1,3,2,4)
Crearea unui tablou indexat numeric se poate face în două moduri în Bash.
1. Declarare fără adăugarea elementelor
declare -a my_first_array
2. Creare și adăugare de elemente simultan
my_first_array=(1 2 3)
Atenție — fără spații în jurul semnului egal!
Virgulele nu se folosesc pentru a separa elementele unui tablou în Bash:
Acesta este incorect:
my_first_array=(1, 2, 3)
Acesta este corect:
my_first_array=(1 2 3)
array[@]. Bash necesită acolade în jurul numelui tabloului pentru a accesa aceste proprietăți.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Accesarea elementelor unui tablou folosind paranteze pătrate.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Setați elementele tabloului folosind notația cu index.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ când suprascrieți un index, de ex. $my_first_array[0]=999 — aceasta nu funcționează.Utilizați notația array[@]:N:M pentru a extrage un subset din tablou.
N este indexul de start, iar M este numărul de elemente returnate.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Adăugați elemente la un tablou folosind array+=(elements).
Exemplu:
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
Ce se întâmplă dacă nu adăugați paranteze în jurul elementului de adăugat? Să vedem.
Exemplu:
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
Șirul 10 va fi adăugat la primul element. Nu este rezultatul dorit!
bash --version în terminalÎn Python:
my_dict = {'city_name': "New York", 'population': 14000000}
În R:
my_list = list(city_name = c('New York'), population = c(14000000))
Un tablou asociativ poate fi creat doar folosind sintaxa declare (cu -A majusculă).
Puteți declara mai întâi și adăuga elementele ulterior, sau le puteți face pe o singură linie.
Să creăm un tablou asociativ:
declare -A city_details # Declararecity_details=([city_name]="New York" [population]=14000000) # Adăugare elementeecho ${city_details[city_name]} # Indexare cu cheie pentru returnarea valorii
New York
Alternativ, creați și atribuiți un tablou asociativ pe o singură linie
declare -A city_details=([city_name]="New York" [population]=14000000)
Accesați cheile unui tablou asociativ folosind !
echo ${!city_details[@]} # Returnează toate cheile
city_name population
Introducere în Bash Scripting