logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:tableaux [05/01/2015 05:53]
smolski créée
doc:programmation:shells:tableaux [21/10/2015 13:48]
milou [Tableau associatif]
Ligne 1: Ligne 1:
-====== script bash : les tableaux ​======+====== script bash : Tableaux ​======
  
-  * Niveau requis : {{tag>​débutant}}+  ​* Objet : script bash : Tableaux 
 +  ​* Niveau requis : {{tag>​débutant ​avisé}} 
 +  * 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 : {{tag>​à-placer}} +  * Suivi :  
-    * Création par [[user>​Hypathie]] 18/​03/​2014 +    * Création par [[user>​Hypathie]] ​le 18/​03/​2014 
-    * Testé par <​Hypathiele <Juin 2014> +    * Testé par [[user>Hypathie]] ​Juin 2014 
-  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=92203#p92203 ​| 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]]
   * ;-)   * ;-)
-  * [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]]+  * [[doc:programmation:bash:​script:​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 ===== 
 <note important>​ <note important>​
 Les tableaux ne sont pas spécifiés par POSIX.\\ ​ Les tableaux ne sont pas spécifiés par POSIX.\\ ​
-Tableaux ​indexés unidimensionnels sont pris en charge en utilisant la syntaxe et la sémantique similaire ​par la plupart des shells comme Korn.\\ ​+Les tableaux ​indexés unidimensionnels sont pris en charge en utilisant la syntaxe et la sémantique similaire ​à la plupart des shells comme Korn.\\ ​
 Pour plus détails voir : [[http://​wiki.bash-hackers.org/​syntax/​arrays]] Pour plus détails voir : [[http://​wiki.bash-hackers.org/​syntax/​arrays]]
 </​note>​ </​note>​
-====Définitions ==== + 
 +==== Définitions ==== 
   - Un tableau est une variable contenant d'​autres variables rangée en mémoire les unes à la suite des autres.   - Un tableau est une variable contenant d'​autres variables rangée en mémoire les unes à la suite des autres.
   -  Un tableau est unidimensionnel.   -  Un tableau est unidimensionnel.
Ligne 35: Ligne 44:
 >Les cases d'un tableau peuvent ne pas être consécutives. >Les cases d'un tableau peuvent ne pas être consécutives.
  
-====Quatre méthodes pour créer un tableau====+==== Quatre méthodes pour créer un tableau ====
  
   * Avec la commande ''​declare''​ et l'​option ''​-a''​ :   * Avec la commande ''​declare''​ et l'​option ''​-a''​ :
Ligne 57: Ligne 66:
   read -a nom-tableau   read -a nom-tableau
  
-===Exemple=== +=== Exemple === 
-<code bash>+ 
 +<code bash script>
 #!/bin/bash #!/bin/bash
 array=([2]=nom1 nom2 [6]=nom3) ​  # (1)  array=([2]=nom1 nom2 [6]=nom3) ​  # (1) 
Ligne 77: Ligne 87:
 ./​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 83: Ligne 93:
 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) ====
  
-         +=== Valeur ​d'une case ===  ​
-====Récupération de valeur(s)==== +
-===Récupération de la valeur ​d'une case===  ​+
  
   ${nom-tableau[indice]}   ${nom-tableau[indice]}
  
-===Récupérer les valeurs ​de toutes les cases===+=== Valeurs ​de toutes les cases === 
 Tous les éléments d'un tableau sont accessibles avec chacune de ces deux syntaxes : Tous les éléments d'un tableau sont accessibles avec chacune de ces deux syntaxes :
  
Ligne 102: Ligne 116:
   ${nom-tableau[@]} ​   ${nom-tableau[@]} ​
  
-===Récupérer le nombre ​d'​éléments d'un tableau=== +=== Nombre ​d'​éléments d'un tableau === 
-Le nombre d'​éléments d'un tableau est accessible chacune de ces deux syntaxes :+ 
 +Le nombre d'​éléments d'un tableau est accessible ​par chacune de ces deux syntaxes :
  
   ${#​nomtableau[*]}   ${#​nomtableau[*]}
Ligne 109: Ligne 124:
   ${#​nomtableau[@]}   ${#​nomtableau[@]}
  
-===Récupérer le n° des cases utilisées===+=== n° des cases utilisées === 
 Il est possible de récupérer le numéro des cases qui ont été utilisées dans un tableau,\\ Il est possible de récupérer le numéro des cases qui ont été utilisées dans un tableau,\\
 Pour ce faire, la syntaxe est : Pour ce faire, la syntaxe est :
Ligne 115: Ligne 131:
   ${!nom-tableau[*]}   ${!nom-tableau[*]}
  
-===Concaténer deux tableaux en un seul===+=== Concaténer deux tableaux en un seul ===
  
 Concaténer dans un seul tableau nouvellement initialisé les cases de tableaux existants : Concaténer dans un seul tableau nouvellement initialisé les cases de tableaux existants :
Ligne 122: Ligne 138:
  
  
-=====Voici un script qui utilise tout cela=====+===== Exemple ​=====
  
-<code bash>+<code bash script>
 #!/bin/bash #!/bin/bash
 # méthodes 1 : # méthodes 1 :
Ligne 157: Ligne 173:
 </​code>​ </​code>​
  
 +===== Nombres entiers =====
  
- 
-=====2)Tableau et nombres entiers===== 
 Si l'on souhaite créer un tableau d'​entiers,​ on utilise la commande ''​declare''​ avec l'​option ''​-ai''​.\\ ​ Si l'on souhaite créer un tableau d'​entiers,​ on utilise la commande ''​declare''​ avec l'​option ''​-ai''​.\\ ​
 (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 script>
 #!/bin/bash #!/bin/bash
 declare -ai tab=(18 2 -2) declare -ai tab=(18 2 -2)
Ligne 174: Ligne 189:
 echo ${t[@]} echo ${t[@]}
 </​code>​ </​code>​
 +
 <code user> <code user>
 ./​mon-script ./​mon-script
 </​code>​ </​code>​
-<code>+ 
 +<file config retour de la commande>
 18 2 -2 18 2 -2
 2 4 6 2 4 6
Ligne 183: Ligne 200:
 5 6 7 8 9  5 6 7 8 9 
 5 6 7 8 9 5 6 7 8 9
-</code+</file> 
-=====3) Ajoutsuppression ​dans les tableaux=====+ 
 +===== 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 script>
 #!/bin/bash #!/bin/bash
 tableau=( bleu jaune rouge ) tableau=( bleu jaune rouge )
Ligne 193: Ligne 212:
 echo ${tableau[*]} echo ${tableau[*]}
 </​code>​ </​code>​
 +
 <​code>​ <​code>​
 3 3
Ligne 200: Ligne 220:
   * 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 script>
 #!/bin/bash #!/bin/bash
 tab=( noir blanc ) tab=( noir blanc )
Ligne 212: Ligne 232:
 colorless noir blanc colorless noir blanc
 </​code>​ </​code>​
 +
   * 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] ...''​
  
-=====4) Un tableau ​associatif=====+===== Tableau ​associatif ===== 
 Un tableau associatif est un tableau uni-dimentionnel à ceci près que les index sont des chaînes de caractères.\\ ​ Un tableau associatif est un tableau uni-dimentionnel à ceci près que les index sont des chaînes de caractères.\\ ​
-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 script>
 #!/bin/bash #!/bin/bash
 declare -A eleves=([secondeA]=30 [secondeB]=29) declare -A eleves=([secondeA]=30 [secondeB]=29)
Ligne 230: Ligne 254:
    done    done
 </​code>​ </​code>​
 +
 <code user> <code user>
 ./​mon-script ./​mon-script
 </​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 ​"de toutes"​ les valeurs.+  * Il faut utiliser ''​@''​ (et non ''​*''​) pour que la boucle permette d'​afficher ​**chacune ​des valeurs**.
  
 +===== Conclusion =====
  
-===== Conclusion =====+==== Récapitulatif ​====
  
-==== Récapitulatif==== 
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
Ligne 270: Ligne 295:
 </​code>​ </​code>​
  
-==== Se creuser un peu les méninges==== +==== Se creuser un peu les méninges ==== 
-Comparez ses méthodes pour associer à l'​affichage,​ un à un , deux éléments du retours :\\ + 
-  * Avec un tableau : +Comparez ses méthodes pour associer à l'​affichage,​ un à un , deux éléments du retours : 
-<code bash>+  * Avec un tableau :<code bash>
 #​!/​bin/​bash ​                           #​!/​bin/​bash ​                          
 tableau=([1]=a [2]=b [3]=c) ​           tableau=([1]=a [2]=b [3]=c) ​          
Ligne 292: Ligne 317:
 **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 [[atelier:chantier:​script-bash-les-fonctions|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:​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]] 
  
 ==== Une astuce ==== ==== Une astuce ====
Ligne 310: 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 =====
  
-[[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]]+  * [[doc:programmation:bash:​script:​fonction|script-bash-les-fonctions]]
doc/programmation/shells/tableaux.txt · Dernière modification: 23/02/2023 02:34 par agp91

Pied de page des forums

Propulsé par FluxBB