J'essaye de lire de stdin plusieurs fois dans un script de coquille, sans succès. L'intention est de lire d'abord une liste de fichiers (qui sont lus à partir du tube stdin), puis de lire deux fois plus pour obtenir deux chaînes de manière interactive. (Ce que j'essaie de faire est de lire une liste de fichiers à joindre dans un e-mail, puis le sujet et enfin le corps de l'e-mail).lecture stdin plusieurs fois dans bash
Jusqu'à présent, j'ai ceci:
photos=($(< /dev/stdin))
echo "Enter message subject"
subject=$(< /dev/stdin)
echo "Enter message body"
body=$(< /dev/stdin)
(plus l'erreur de vérification du code que je ne pas préciser pour succintness)
Cependant, cela devient un sujet vide et le corps vraisemblablement parce que les deuxième et troisième redirections se EOF .
J'ai essayé de fermer et rouvrir stdin avec < & - et d'autres choses, mais cela ne semble pas fonctionner de cette façon.
J'ai même essayé d'utiliser un séparateur pour la liste des fichiers, en utilisant une boucle "while; read line" et de sortir de la boucle lorsque le séparateur a été détecté. Mais ça n'a pas marché non plus (??).
Des idées pour construire quelque chose comme ça?
La raison qui ne fonctionne pas pour moi est que j'essaie d'utiliser un tuyau pour passer la liste des photos. Si je lis simplement ces champs avant la liste, les deux premières photos de la liste finissent par être soumises et envoyées par mail, ce qui n'est pas ce que je veux. (Bien sûr, je pourrais dicter que le sujet et le corps doivent être passés dans les deux premières lignes du tuyau d'entrée, mais c'est beaucoup trop moche pour moi.) – alvherre