Estoy tratando de leer de stdin varias veces en un script de shell, sin suerte. La intención es leer primero una lista de archivos (que se leen desde la tubería stdin), y luego leer dos veces más para obtener dos cadenas de forma interactiva. (Lo que intento hacer es leer una lista de archivos para adjuntar en un correo electrónico, luego el asunto y finalmente el cuerpo del correo electrónico).leyendo stdin varias veces en bash
Hasta ahora tengo esto:
photos=($(< /dev/stdin))
echo "Enter message subject"
subject=$(< /dev/stdin)
echo "Enter message body"
body=$(< /dev/stdin)
(además de la comprobación de errores de código que omito para succintness)
Sin embargo, esto se vuelve un asunto vacío y el cuerpo presumiblemente porque el segundo y tercer redirecciones consiguen EOF .
He estado tratando de cerrar y volver a abrir stdin con < & - y cosas así, pero parece que no funciona de esa manera.
Incluso intenté usar un separador para la lista de archivos, utilizando un ciclo "while; read line" y salí del bucle cuando se detectó el separador. Pero eso tampoco funcionó (??).
Alguna idea de cómo construir algo como esto?
La razón por la que no funciona para mí es que estoy tratando de usar una tubería para pasar la lista de fotos. Si simplemente leo los campos antes de la lista, las dos primeras fotos en la lista terminan siendo asunto y cuerpo del correo electrónico, que no es lo que quiero. (Por supuesto, podría dictar que el sujeto y el cuerpo se deben pasar en las dos primeras líneas del tubo de entrada, pero eso es demasiado feo para mí). – alvherre