use bash arrays (bash-lists.md)

This commit is contained in:
makayabou 2020-11-22 01:51:19 +01:00
parent d560cec71c
commit 915cabffd5
3 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,82 @@
# Les listes et les dictionnaires avec Bash
## Les listes (`indexed array`)
### Création d'une liste
```
declare -a MA_LIST
```
### Modification de la liste
1. Ajout d'éléments
```
MA_LIST=(1er_element 2nd_element)
MA_LIST+=("3eme élément avec des espaces")
MA_LIST[3]="4eme élémént"
```
2. Changement de valeur d'un élément
```
MA_LIST[0]="la nouvelle valeur qu'on met pour le 1er élément"
MA_LIST[1]="la valeur pour le 2eme élément"
```
3. Traitement sur l'ensemble des éléments
- en utilisant la liste des index `${!MA_LIST[@]}`:
```
for i in "${!MA_LIST[@]}" ; do
echo "index = $i - value = ${MA_LIST[i]}"
done
```
- en utilisant la liste des valeurs `${MA_LIST[@]}`
```
for i in "${MA_LIST[@]}" ; do
echo "value = ${i}"
done
```
- nombre d'éléments:
```
echo "nombre d'éléments : ${MA_LIST[]}
```
## Les tableaux (`associative arrays`)
### Création d'un tableau
```
declare -A MY_ARRAY
```
1. Ajout d'éléments
```
MY_ARRAY=([clé1]=1er_element [clé2]=2nd_element)
MY_ARRAY+=([clé3]="3eme élément avec des espaces")
MY_ARRAY[dernière_clé]="4eme élément"
```
2. Changement de valeur d'un élément
```
MY_ARRAY[clé1]="la nouvelle valeur qu'on met pour l'élément associé à `clé1`"
```
3. Traitement sur l'ensemble des éléments
- en utilisant la liste des clés `${!MY_ARRAY[@]}`:
```
for i in "${!MY_ARRAY[@]}" ; do
echo "key = $i - value = ${MY_ARRAY[i]}"
done
```
- en utilisant la liste des valeurs `${MY_ARRAY[@]}`
```
for i in "${MY_ARRAY[@]}" ; do
echo "value = ${i}"
done
```
- nombre d'éléments:
```
echo "nombre d'éléments : ${MY_ARRAY[]}
```
!!! info
Pour aller plus loin (en anglais):
- [linuxjournal.com](https://www.linuxjournal.com/content/bash-arrays)
- [le manuel bash](https://www.gnu.org/software/bash/manual/html_node/Arrays.html)
- [opensource.com](https://opensource.com/article/18/5/you-dont-know-bash-intro-bash-arrays)

View File

@ -6,3 +6,4 @@
- [Monter une partition](mount.md)
- [read](read.md), pour permettre à l'utilisateur d'interagir avec un script (user prompt / user input)
- [heredoc](heredoc.md), le fameux `EOF`, pour afficher du contenu sur plusieurs lignes
- [listes et dictionnaires avec Bash](bash-lists.md)

View File

@ -78,6 +78,7 @@ nav:
- divers/cmd/mount.md
- divers/cmd/read.md
- divers/cmd/heredoc.md
- "Bash: Listes": divers/cmd/bash-lists.md
- "Admin Sys":
- divers/admin/index.md
- "Installer Adobe pdf reader": divers/admin/acroread-debian.md