Envoyé par
Hakuna_Maths_ata
mon programme doit lire l'entrée standard jusque sa fin et afficher les lignes contenant le mot hello :
Attention: "lire l'entrée standard jusque sa fin" est différent de "lire une ligne jusqu'à sa fin".
Pour lire une ligne jusqu'à sa fin, c'est-à-dire jusqu'au caractère de fin de ligne (retour charriot ou return), on peut utiliser la fonction "read".
S'il s'agit bien de lire l'entrée standard jusqu'à sa fin, c'est différent. Si l'entrée standard est lue interactivement, il faut taper un crtl-D pour signaler la fin de l'entrée, mais si le programme lit le contenu d'un fichier, il s'arrêtera automatiquement lorsqu'il atteindra la fin du fichier.
Pour moi, la bonne réponse est la dernière de Bufferbob cat | grep hello, que l'on peut simplifier en supprimant l'uuoc en grep hello!
Le script "mon_script.sh" pourrait donc être:
1 2 3 4 5
| #! /bin/bash
echo "Veuillez saisir votre texte (pour terminer, tapez ctrl-D): "
grep "hello" |
De cette manière, tu peux utiliser le script interactivement en tapant ./mon_script.sh, en saisissant interactivement plusieurs lignes et en finissant la saisie par un ctrl-D.
Mais, si tu as un fichier texte "mon_texte.txt" contenant des lignes, tu peux aussi lui "appliquer" le script en tapant:
./mon_script.sh < mon_texte.txt
afin d'en extraire les lignes contenant "hello".
Partager