User Tools

Site Tools


informatique:linux:programmation_shell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
informatique:linux:programmation_shell [2020/01/08 10:57] – [Typage] declare pteuinformatique:linux:programmation_shell [2020/01/14 14:58] – [Tableau associatif] pteu
Line 77: Line 77:
  
 Pour plus de détails sur le pseudo-typage en bash, voir la fonction [[informatique:linux:commandes_linux#declare|declare]]. Pour plus de détails sur le pseudo-typage en bash, voir la fonction [[informatique:linux:commandes_linux#declare|declare]].
 +
 ===== Manipulation des variables===== ===== Manipulation des variables=====
  
Line 129: Line 130:
   * ''IFS="\n"'' (Internal Field Separator) le séparateur de champ est "ENTER" (utilisée par la commande read)   * ''IFS="\n"'' (Internal Field Separator) le séparateur de champ est "ENTER" (utilisée par la commande read)
   * ''$PWD'' renvoie le chemin du shell depuis lequel est lancé le script (équivalent à pwd) ; c'est complémentaire de ''$0''   * ''$PWD'' renvoie le chemin du shell depuis lequel est lancé le script (équivalent à pwd) ; c'est complémentaire de ''$0''
- 
  
  
Line 154: Line 154:
 trois trois
 </code> </code>
 +
 +Exemple de découpage d'une chaîne dans un tableau, avec comme séparateur ";" :
 +<code bash>
 +CHAINE='17;8 23;9'
 +IFS=";"                       # définition du séparateur
 +read -a TAB <<<"$CHAINE"
 +echo "${#TAB[@]}"              # affiche de la taille du tableau (nombre de cellule)
 + 3
 +printf '%s\n' "${TAB[@]}"      # affichage du contenu du tableau cellule par cellule
 + 17
 + 8 23
 + 9
 +</code>
 +
 ====Tableau à 2 dimensions==== ====Tableau à 2 dimensions====
  
-Ça n'eût pas existé pas sous bash :). Mais on peut l'émuler en créant un tableau associatif (qui, à une clé fait correspondre un contenu), en codant la clé pour émuler 2 dimensions. Exemple : pour émuler un tableau de 2 x 3 cases :+Ça n'eût pas existé sous bash :). Mais on peut l'émuler en créant un tableau associatif (qui, à une clé fait correspondre un contenu), en codant la clé pour émuler 2 dimensions. Exemple : pour émuler un tableau de 2 x 3 cases :
 <code bash> <code bash>
 # déclaration d'un tableau associatif T # déclaration d'un tableau associatif T
Line 178: Line 192:
 </code> </code>
  
 +====Tableau associatif====
 +
 +Créer et utiliser un vrai tableau associatif :
 +<code bash>
 +declare -A TA=([cle1]=valeur1 ["cle 2"]="valeur 2" [cle3]=valeur3)
 +echo "${TA[cle1]}"
 +# valeur1
 +
 +# Parcourir le tableau
 +for cle in "${!TA[@]}"; do
 +   echo "cle=$cle ; val=${TA[$cle]}"
 +done
 +#cle=cle 2 ; val=valeur 2
 +#cle=cle3 ; val=valeur3
 +#cle=cle1 ; val=valeur1
 +</code>
  
 +Pour connaitre la taille de ce tableau : ''${#TA[@]}'' (3 dans cet exemple).
 =====getopts : analyse des arguments d'un script===== =====getopts : analyse des arguments d'un script=====
  
informatique/linux/programmation_shell.txt · Last modified: 2023/10/02 13:35 by pteu