Introduction à la programmation Bash
Alex Scriven
Data Scientist
Deux types de tableaux en Bash :
En Python : my_list = [1,3,2,4]
En R : my_vector <- c(1,3,2,4)
On peut créer un tableau à index numériques de deux façons en Bash.
1. Déclarer sans ajouter d'éléments
declare -a my_first_array
2. Créer et ajouter des éléments en même temps
my_first_array=(1 2 3)
À retenir : aucun espace autour du signe égal !
Les virgules ne séparent pas les éléments d'un tableau en Bash :
Ceci n'est pas correct :
my_first_array=(1, 2, 3)
Ceci est correct :
my_first_array=(1 2 3)
array[@]. Notez que Bash exige des accolades autour du nom du tableau pour accéder à ces propriétés.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Accéder aux éléments avec des crochets.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Définir des éléments avec la notation par 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
$ lors d'une réaffectation d'index, p. ex. $my_first_array[0]=999, car cela ne fonctionne pas.Utilisez array[@]:N:M pour « tronquer » une partie du tableau.
N est l'index de départ et M le nombre d'éléments à retourner.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Ajouter à un tableau avec array+=(elements).
Par exemple :
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
Que se passe-t-il si vous n'ajoutez pas de parenthèses autour de ce que vous voulez ajouter ? Voyons.
Par exemple :
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
La chaîne 10 est simplement ajoutée au premier élément. Pas ce qu'on veut !
bash --version dans le terminalEn Python :
my_dict = {'city_name': "New York", 'population': 14000000}
En R :
my_list = list(city_name = c('New York'), population = c(14000000))
On ne peut créer un tableau associatif qu'avec declare (et l'option -A en majuscules).
Vous pouvez déclarer d'abord, puis ajouter des éléments, ou tout faire sur une seule ligne.
Créons un tableau associatif :
declare -A city_details # Déclarer d'abordcity_details=([city_name]="New York" [population]=14000000) # Ajouter des élémentsecho ${city_details[city_name]} # Indexer avec la clé pour obtenir la valeur
New York
Autre option : créer et affecter un tableau associatif sur une seule ligne
declare -A city_details=([city_name]="New York" [population]=14000000)
Accéder aux « clés » d'un tableau associatif avec !
echo ${!city_details[@]} # Retourner toutes les clés
city_name population
Introduction à la programmation Bash