informatique:linux:programmation_shell
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:linux:programmation_shell [2021/04/07 08:15] – [Expression sur les fichiers] if -t pteu | informatique:linux:programmation_shell [2024/10/02 15:10] (current) – [pipe ("|")] test de présence d'un flux envoyé sur l'entrée standard (pipe) pteu | ||
---|---|---|---|
Line 470: | Line 470: | ||
$ false | true; echo $? | $ false | true; echo $? | ||
1 | 1 | ||
+ | </ | ||
+ | |||
+ | * pour écrire un script qui traite l' | ||
+ | <code bash> | ||
+ | # s'il existe un pipe sur l' | ||
+ | if [ -p /dev/stdin ]; then | ||
+ | source="/ | ||
+ | else | ||
+ | source=" | ||
+ | fi | ||
</ | </ | ||
===== read ===== | ===== read ===== | ||
Line 479: | Line 489: | ||
Pour afficher un texte avant la saisie on utilise '' | Pour afficher un texte avant la saisie on utilise '' | ||
<code bash> | <code bash> | ||
- | read -p "Quel est le numéro de ta CB ? Et le cryptogramme visuel | + | read -p "Quel est ton nom ?" NOM |
+ | </ | ||
+ | Pour masquer la saisie, s'il s'agit d'un mot de passe par exemple, on utilise '' | ||
+ | <code bash> | ||
+ | read -s -p "Et ton numéro | ||
</ | </ | ||
- | Pour lire depuis un fichier | + | ====Lire |
<code bash> | <code bash> | ||
read < fichier.txt | read < fichier.txt | ||
Line 489: | Line 503: | ||
while read line; do | while read line; do | ||
echo $line | echo $line | ||
+ | done < fichier.txt | ||
+ | </ | ||
+ | |||
+ | 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 " | ||
done < fichier.txt | done < fichier.txt | ||
</ | </ | ||
Line 516: | Line 537: | ||
foo | foo | ||
</ | </ | ||
+ | ====Lire depuis une variable==== | ||
- | Pour lire depuis une variable : | ||
<code bash> | <code bash> | ||
read <<< | read <<< | ||
+ | </ | ||
+ | |||
+ | Seconde façon de faire, et plus adéquate si la variable contient des sauts de ligne : | ||
+ | <code bash> | ||
+ | ECHO=" | ||
+ | | ||
+ | | ||
</ | </ | ||
====== Expressions arithmétiques ====== | ====== Expressions arithmétiques ====== | ||
Line 944: | Line 972: | ||
</ | </ | ||
+ | =====trim (suppression des espaces dans une chaîne)===== | ||
+ | |||
+ | bash ne possède pas de fonction prédéfinie pour " | ||
+ | |||
+ | Pour faire cette office il existe plusieurs possibilités d' | ||
+ | <code bash> | ||
+ | arr=(' | ||
+ | ' test@domain.com ' ' | ||
+ | </ | ||
+ | |||
+ | * en utilisant la substitution de caractère dans les variables, en activant le //globbing étendu// (des motifs d' | ||
+ | <code bash> | ||
+ | shopt -s extglob | ||
+ | # (pour reconnaître [[:blank:]] qui définit l' | ||
+ | arr=( " | ||
+ | arr=( " | ||
+ | </ | ||
+ | |||
+ | * avec '' | ||
+ | <code bash> | ||
+ | function trim() { | ||
+ | mapfile -t t_input<<<" | ||
+ | [[ ${# | ||
+ | set -- ${t_input[@]} | ||
+ | printf ' | ||
+ | } | ||
+ | trim " | ||
+ | </ | ||
====== Ressources ====== | ====== Ressources ====== | ||
Line 951: | Line 1007: | ||
* https:// | * https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |
informatique/linux/programmation_shell.1617783310.txt.gz · Last modified: 2021/04/07 08:15 by pteu