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 revisionBoth sides next revision
informatique:linux:programmation_shell [2019/04/24 07:16] – [read] pteuinformatique:linux:programmation_shell [2019/04/24 07:28] – [pipe] pteu
Line 242: Line 242:
  
 ======Les fonctions====== ======Les fonctions======
 +
 +=====pipe ("|")=====
 +
 +Le pipe (tube) est une fonction qui permet de chainer la sortie d'une première commande sur l'entrée de la seconde (c'est un tube/canal inter-processus).
 +<code bash>
 +echo "toto et tata" | awk '{$3}'
 + tata
 +</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) :
 +<code bash>
 +false | true
 +echo "${PIPESTATUS[0]} ${PIPESTATUS[1]}"
 + 1 0
 +</code>
  
 ===== read ===== ===== read =====
Line 251: Line 266:
 Pour afficher un texte avant la saisie on utilise ''-p'' ; on peut récupérer plusieurs saisie d'un seul coup : Pour afficher un texte avant la saisie on utilise ''-p'' ; on peut récupérer plusieurs saisie d'un seul coup :
 <code bash> <code bash>
-read -p "Quel est le nombre indique sur votre CB ? Et le cryptogramme visuel de derrière ?" CARD_NUMBER CRYPTO+read -p "Quel est le numéro de ta CB ? Et le cryptogramme visuel de derrière ?" CARD_NUMBER CRYPTO
 </code> </code>
  
Line 258: Line 273:
 read < fichier.txt read < fichier.txt
  
-souvent utilisé dans une boucle while pour le lire ligne par ligne :+c'est plutôt utilisé dans une boucle whilepour le lire ligne par ligne :
 while read line; do while read line; do
   echo $line   echo $line
Line 275: Line 290:
 done done
 </code> </code>
-Le premier exemple utilise une [[https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html#Process-Substitution|process substitution]], qui permet de référencer l'entrée (''>(list)'') ou la sortie (''<(list)'') d'une commande comme un fichier et non plux un flux ; le second un pipe, mais les 2 se valent.+Le premier exemple utilise une [[https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html#Process-Substitution|process substitution]], qui permet de référencer l'entrée (''>(list)'') ou la sortie (''<(list)'') d'une commande comme un fichier et non plus un flux ; le second un pipe, mais les 2 se valent.
  
 Pour lire depuis une variable : Pour lire depuis une variable :
informatique/linux/programmation_shell.txt · Last modified: 2023/10/02 13:35 by pteu