pendant l'exécution d'un script, il peut arriver qu'on ait besoin de demander des informations à un utilisateur;
qu'il s'agisse d'une simple confirmation (continuer [Yn] :), ou d'une donnée plus large (quel est le chemin du fichier à traiter :),
il est question de lire des données depuis l'entrée standard avec la commande read.
le script semble figé, mais, en fait, il attend que l'utilisateur valide le texte qu'il a entré en appuyant sur la touche Enter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part read -p 'continuer [Yn] : '
/!\ l'invite affichée par l'option -p est envoyée sur la sortie d'erreur.
cela signifie que lorsque cette derniière [est redirigée] vers un fichier journal, l'invite ne sera plus visible.
il peut alors être préférable d'omettre cette option, et de faire un echo de l'invite sur la sortie standard, bien sûr.
comme pour lire d'un fichier ligne par ligne, il est possible de demander à l'utilisateur d'entrer des données sous forme d'un tableau.
il faut que l'utilisateur respecte un certain format :il faut donc protéger le séparateur par défaut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ read -a tableau 'mlk mlk' poi $ printf '-> %s\n' "${tableau[@]}" -> 'mlk -> mlk' -> poi
on peut définir un séparateur avec l'IFS (Internal Field Separator) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ read -a tableau mlk\ mlk poi $ printf '-> %s\n' "${tableau[@]}" -> mlk mlk -> poi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ IFS=';' read -a tableau mlk mlk;poi $ printf '-> %s\n' "${tableau[@]}" -> mlk mlk -> poi
Partager