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/14 09:01] – [Les tableaux] Exemple de découpage d'une chaîne dans un tableau pteuinformatique:linux:programmation_shell [2020/04/29 09:45] – [Variables spécifiques] $- pteu
Line 127: Line 127:
   * ''$!'' renvoie le PID de la dernière commande   * ''$!'' renvoie le PID de la dernière commande
   * ''$?'' renvoie le retour (code d'erreur par exemple) de la dernière commande   * ''$?'' renvoie le retour (code d'erreur par exemple) de la dernière commande
 +  * ''$-'' renvoie la liste des paramètres courts du shell. Pour les interpréter, saisir ''help set'' dans le shell.
  
   * ''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)
Line 192: Line 193:
 </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=====
  
Line 512: Line 530:
   * ''n1 -le n2'' plus petit ou égal   * ''n1 -le n2'' plus petit ou égal
  
 +Comme il n'y a pas de typage en bash, pour tester si la valeur d'une variable est un nombre (entier) il faut réaliser le tester :
 +<code bash>
 +# Solution à base de REGEX
 +[[ $VAR =~ ^[0-9]+$ ]] || echo "VAR n'est pas un entier"
 +# NB : l'expression régulière ne doit pas être quotée,
 +#      ou doit être enregistrée dans une variable sinon ça ne matche pas
 +
 +# "auto-test" numérique :)
 +[ $VAR -eq $VAR ] 2>/dev/null || echo "VAR n'est pas un entier"
 +</code>
 ==== Opérateurs ==== ==== Opérateurs ====
   * ''!'' unaire de négation   * ''!'' unaire de négation
informatique/linux/programmation_shell.txt · Last modified: 2023/10/02 13:35 by pteu