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
informatique:linux:programmation_shell [2022/10/17 21:28] – [trim] pteuinformatique:linux:programmation_shell [2023/10/02 13:35] (current) – [Lire depuis un fichier] pteu
Line 479: Line 479:
 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 numéro de ta CB ? Et le cryptogramme visuel de derrière ?" CARD_NUMBER CRYPTO+read -p "Quel est ton nom ?" NOM 
 +</code> 
 +Pour masquer la saisie, s'il s'agit d'un mot de passe par exemple, on utilise ''-s''
 +<code bash> 
 +read -s -p "Et ton numéro de CB ?" CARD_NUMBER
 </code> </code>
  
-Pour lire depuis un fichier :+====Lire depuis un fichier====
 <code bash> <code bash>
 read < fichier.txt read < fichier.txt
Line 489: Line 493:
 while read line; do while read line; do
   echo $line   echo $line
 +done < fichier.txt
 +</code>
 +
 +Pour lire mot par mot, si le fichier est formaté (par exemple s'il contient une liste de "nom prénom") :
 +<code bash>
 +while read nom prenom; do
 +  echo "nom=$nom ; prenom=$prenom"
 done < fichier.txt done < fichier.txt
 </code> </code>
Line 516: Line 527:
 foo foo
 </code> </code>
 +====Lire depuis une variable====
  
-Pour lire depuis une variable : 
 <code bash> <code bash>
 read <<< $var read <<< $var
 +</code>
 +
 +Seconde façon de faire, et plus adéquate si la variable contient des sauts de ligne :
 +<code bash>
 +ECHO="toto1 titi1\ntoto2 titi2"; echo -e "$ECHO" | while read a b; do echo "a=$a ; b=$b"; done
 + a=toto1 ; b=titi1
 + a=toto2 ; b=titi2
 </code> </code>
 ====== Expressions arithmétiques ====== ====== Expressions arithmétiques ======
Line 954: Line 972:
 </code> </code>
  
-  * en utilisant la substitution de caractère dans les variables, en activant le //globbing étendu// (des motifs d'expressions régulières prédéfinis) :+  * en utilisant la substitution de caractère dans les variables, en activant le //globbing étendu// (des motifs d'expressions régulières prédéfinis) (source: [[https://www.cyberciti.biz/faq/how-to-trim-leading-and-trailing-white-space-in-bash/|cyberciti.biz]]) :
 <code bash> <code bash>
 shopt -s extglob                     # activation des extended glob shopt -s extglob                     # activation des extended glob
Line 962: Line 980:
 </code> </code>
  
-  * avec ''mapfile'' et ''set --''+  * avec ''mapfile'' et ''<nowiki>set --</nowiki>'' (source: [[https://stackoverflow.com/questions/61081608/bash-remove-leading-and-trailing-spaces-in-array/61087835#61087835|stackoverflow]])
 <code bash> <code bash>
 function trim() { function trim() {
informatique/linux/programmation_shell.1666042086.txt.gz · Last modified: 2022/10/17 21:28 by pteu