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 [2019/04/24 07:28] – [pipe] pteuinformatique:linux:programmation_shell [2019/04/24 07:53] – [pipe ("|")] pteu
Line 123: Line 123:
   * ''${TAB[0]}'' : contenu du premier enregistrement du tableau TAB   * ''${TAB[0]}'' : contenu du premier enregistrement du tableau TAB
   * ''$TAB'' : équivalent de ''${TAB[0]}''   * ''$TAB'' : équivalent de ''${TAB[0]}''
-  * ''${TAB[*]}'' : désigne l'ensemble des enregistrements du tableau TAB+  * ''${TAB[*]}'' ou ''${TAB[@]}'' : désigne l'ensemble des enregistrements du tableau TAB
  
 Comme pour les variables classiques, on peut récupérer la longueur en le précèdent de ''#'' : Comme pour les variables classiques, on peut récupérer la longueur en le précèdent de ''#'' :
Line 251: Line 251:
 </code> </code>
  
-Le soucis c'est qu'on ne récupère que le code de retour de la dernière commande du pipe ; et dans l'exemple précédent, awk renvoie toujours 0. On peut récupérer ce code de retour dans le tableau $PIPESTATUS (spécifique à bash) :+Le soucis c'est qu'on ne récupère que le code de retour de la dernière commande du pipe ; et dans l'exemple précédent, awk renvoie toujours 0. Pour résoudre ce soucis, on peut 
 +  * récupérer les codes de retour de chaque commande dans le tableau ''$PIPESTATUS'' (spécifique à bash) :
 <code bash> <code bash>
 false | true false | true
-echo "${PIPESTATUS[0]} ${PIPESTATUS[1]}"+echo "${PIPESTATUS[@]}"
  1 0  1 0
 </code> </code>
 +  * utiliser la variable ''$pipefail'' (ksh, zsh ou bash) qui va enregistrer le code de retour de la dernière commande qui se terminera en erreur (retour != 0) ; ou à défaut, vaudra 0 si toutes se terminent correctement : 
 +<code bash> 
 +$ false | true; echo $? 
 +
 +$ set -o pipefail 
 +$ false | true; echo $? 
 +
 +</code>
 ===== read ===== ===== read =====
  
informatique/linux/programmation_shell.txt · Last modified: 2023/10/02 13:35 by pteu