Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:programmation:shells:tableaux [13/04/2015 19:47] milou [script bash : Tableaux] |
doc:programmation:shells:tableaux [23/02/2023 02:34] (Version actuelle) agp91 [Conclusion] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* Objet : script bash : Tableaux | * Objet : script bash : Tableaux | ||
- | * Niveau requis : {{tag>débutant}} | + | * Niveau requis : {{tag>débutant avisé}} |
* Commentaires : FIXME | * Commentaires : FIXME | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
* Suivi : | * Suivi : | ||
- | * Création par [[user>Hypathie]] 18/03/2014 | + | * Création par [[user>Hypathie]] le 18/03/2014 |
- | * Testé par [[user>Hypathie]] le <Juin 2014> | + | * Testé par [[user>Hypathie]] Juin 2014 |
- | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=9181 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=142812#p142812 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
+ | |||
+ | |||
+ | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
- | ------ | ||
**Nota : Les autres wiki :** | **Nota : Les autres wiki :** | ||
- | * [[atelier:chantier:debuter-avec-les-scripts-shell-bash]] | + | * [[doc:programmation:shells:debuter-avec-les-scripts-shell-bash]] |
- | * [[atelier:chantier:script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] | + | * [[doc:programmation:shells:script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]] |
- | * [[atelier:chantier:script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]] | + | * [[doc:programmation:shells:script-bash-detail-sur-les-parametres-et-les-boucles|modification de variable et de paramètre]] |
- | * [[atelier:chantier:script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] | + | * [[doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] |
- | * [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | + | * [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sortie-et-les-tests]] |
* ;-) | * ;-) | ||
- | * [[doc:programmation:bash:script:fonction|script-bash-les-fonctions]] | + | * [[doc:programmation:shells:fonction|script-bash-les-fonctions]] |
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
===== Utiliser des tableaux ===== | ===== Utiliser des tableaux ===== | ||
Ligne 66: | Ligne 67: | ||
=== Exemple === | === Exemple === | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
array=([2]=nom1 nom2 [6]=nom3) # (1) | array=([2]=nom1 nom2 [6]=nom3) # (1) | ||
Ligne 85: | Ligne 86: | ||
./mon-script | ./mon-script | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
2 3 6 | 2 3 6 | ||
0 1 2 | 0 1 2 | ||
Ligne 91: | Ligne 92: | ||
nom nom nom nom nom | nom nom nom nom nom | ||
0 1 2 3 4 | 0 1 2 3 4 | ||
- | </code> | + | </file> |
>''2 3 6'' : la première valeur a l'indice 2 ; la deuxième a l'indice 3 ; la troisième a l'indice 6. | >''2 3 6'' : la première valeur a l'indice 2 ; la deuxième a l'indice 3 ; la troisième a l'indice 6. | ||
+ | > | ||
>''0 1 2'' : Il y a une valeur dans les cases d'indice 0, d'indice 1, d'indice 2. | >''0 1 2'' : Il y a une valeur dans les cases d'indice 0, d'indice 1, d'indice 2. | ||
+ | > | ||
>''0 1 2'' : idem | >''0 1 2'' : idem | ||
- | >''0 1 2 3 4'' : Sans indice donné manuellement, les indices attribués aux valeurs\\ suivent l'ordre des entiers naturels en __commençant à zéro__. | + | > |
+ | >''0 1 2 3 4'' : Sans indice donné manuellement, les indices attribués aux valeurs suivent l'ordre des entiers naturels en __commençant à zéro__. | ||
==== Récupération de valeur(s) ==== | ==== Récupération de valeur(s) ==== | ||
Ligne 135: | Ligne 139: | ||
===== Exemple ===== | ===== Exemple ===== | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
# méthodes 1 : | # méthodes 1 : | ||
Ligne 173: | Ligne 177: | ||
(l'ordre des options n'a pas d'importance.) | (l'ordre des options n'a pas d'importance.) | ||
Les syntaxes précédentes peuvent aussi être utilisées : | Les syntaxes précédentes peuvent aussi être utilisées : | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
declare -ai tab=(18 2 -2) | declare -ai tab=(18 2 -2) | ||
Ligne 189: | Ligne 193: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
18 2 -2 | 18 2 -2 | ||
2 4 6 | 2 4 6 | ||
Ligne 195: | Ligne 199: | ||
5 6 7 8 9 | 5 6 7 8 9 | ||
5 6 7 8 9 | 5 6 7 8 9 | ||
- | </code> | + | </file> |
===== Ajout suppression ===== | ===== Ajout suppression ===== | ||
* Pour ajouter un élément à un tableau : ''tableau[${#tableau[*]}]=element'' | * Pour ajouter un élément à un tableau : ''tableau[${#tableau[*]}]=element'' | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
tableau=( bleu jaune rouge ) | tableau=( bleu jaune rouge ) | ||
Ligne 215: | Ligne 219: | ||
* Pour ajouter un élément au début d'un tableau : ''tableau=( element ${tableau[*]} )'' | * Pour ajouter un élément au début d'un tableau : ''tableau=( element ${tableau[*]} )'' | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
tab=( noir blanc ) | tab=( noir blanc ) | ||
Ligne 229: | Ligne 233: | ||
* pour supprimer un tableau : ''unset nom-tableau'' | * pour supprimer un tableau : ''unset nom-tableau'' | ||
+ | |||
* pour supprimer la case d'un tableau : ''unset nom-tableau[indice] ...'' | * pour supprimer la case d'un tableau : ''unset nom-tableau[indice] ...'' | ||
Ligne 236: | Ligne 241: | ||
Il en va de même que précédemment : | Il en va de même que précédemment : | ||
* l'indice se récupère ainsi : ''${!tableau[@]}''; | * l'indice se récupère ainsi : ''${!tableau[@]}''; | ||
+ | |||
* la valeur se récupère ainsi : ''${tableau[@]}''; | * la valeur se récupère ainsi : ''${tableau[@]}''; | ||
| | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
declare -A eleves=([secondeA]=30 [secondeB]=29) | declare -A eleves=([secondeA]=30 [secondeB]=29) | ||
Ligne 252: | Ligne 258: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
l'indice ici nom de la classe est : secondeB | l'indice ici nom de la classe est : secondeB | ||
le nombre d'élèves est ici la valeur : 29 | le nombre d'élèves est ici la valeur : 29 | ||
l'indice ici nom de la classe est : secondeA | l'indice ici nom de la classe est : secondeA | ||
le nombre d'élèves est ici la valeur : 30 | le nombre d'élèves est ici la valeur : 30 | ||
- | </code> | + | </file> |
* Il faut utiliser ''@'' (et non ''*'') pour que la boucle permette d'afficher **chacune des valeurs**. | * Il faut utiliser ''@'' (et non ''*'') pour que la boucle permette d'afficher **chacune des valeurs**. | ||
Ligne 264: | Ligne 270: | ||
==== Récapitulatif ==== | ==== Récapitulatif ==== | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
tab=( rouge vert bleu) | tab=( rouge vert bleu) | ||
Ligne 291: | Ligne 297: | ||
Comparez ses méthodes pour associer à l'affichage, un à un , deux éléments du retours : | Comparez ses méthodes pour associer à l'affichage, un à un , deux éléments du retours : | ||
- | * Avec un tableau :<code bash> | + | * Avec un tableau :<code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
tableau=([1]=a [2]=b [3]=c) | tableau=([1]=a [2]=b [3]=c) | ||
for var in "${!tableau[@]}" ; do | for var in "${!tableau[@]}" ; do | ||
- | echo "$var : ${tableau[$var]}" | + | echo "$var : ${tableau[$var]}" |
done | done | ||
</code> | </code> | ||
* Avec les paramètres de position et une boucle : | * Avec les paramètres de position et une boucle : | ||
- | <code bash> | + | <code bash mon-scipt> |
set a b c | set a b c | ||
n=1 | n=1 | ||
- | for v in $@ ; do | + | for v in $@ |
- | echo "$n: $v" | + | do |
- | let $[ n += 1 ] | + | echo "$n: $v" |
+ | ((n++)) | ||
done | done | ||
</code> | </code> | ||
**Merci à enikar pour ce script et cette réflexion sur IRC** 8-) | **Merci à enikar pour ce script et cette réflexion sur IRC** 8-) | ||
- | Mais aussi, après avoir vu [[doc:programmation:bash:script:fonction|script-bash-les-fonctions]] avec le script de captnfab : [[doc:programmation:shell:avancee#les-fonctions|Fonctionnalités avancées du Shell: Les fonctions]] | + | Mais aussi, après avoir vu [[doc:programmation:shells:fonction|script-bash-les-fonctions]] avec le script de captnfab : [[doc:programmation:shell:avancee#les-fonctions|Fonctionnalités avancées du Shell: Les fonctions]] |
Ligne 317: | Ligne 324: | ||
Lister avec numérotation tous les fichiers d'un répertoire | Lister avec numérotation tous les fichiers d'un répertoire | ||
- | <code bash> | + | <code bash mon-script> |
#!/bin/bash | #!/bin/bash | ||
directory=(/*) # (1) | directory=(/*) # (1) | ||
Ligne 329: | Ligne 336: | ||
>(2) : Pour afficher tous les éléments du tableau. | >(2) : Pour afficher tous les éléments du tableau. | ||
- | Pour d'autres exemples: [[atelier:chantier:page-man-bash-v-les-tableaux#tableau-et-iteration-for|shell bash : tableaux et itération for]] | + | |
===== La suite c'est ici ===== | ===== La suite c'est ici ===== | ||
- | * [[doc:programmation:bash:script:fonction|script-bash-les-fonctions]] | + | * [[doc:programmation:shells:fonction|script-bash-les-fonctions]] |