
Tengo un programa de consola C simple que toma algunas entradas del teclado y genera indicaciones y cálculos. También tengo dos archivos de texto: un archivo con la entrada para el programa y un archivo que contiene la salida que el programa debería dar.
El problema es ese
$ c_program < input_file > output_file
no repite la entrada al archivo de salida. El archivo_salida tendrá solo las indicaciones y los cálculos, sin la entrada redirigida. ¿Cómo puedo hacer que la entrada encaje con la salida para que el archivo de salida se vea igual que cuando la entrada se realiza con el teclado?
Por ejemplo, aquí hay una sesión de muestra:
Input number of feet traveled: 5
Input number of seconds: 2.5
Average speed is 2.0 feet per second
Pero al redirigir la entrada y la salida, obtenemos:
Input number of feet traveled: Input number of seconds: Average speed is 2.0 feet per second
¿Cómo puedo hacer que el segundo se parezca al primero?
Respuesta1
Para programar una interacción con un programa y al mismo tiempo capturar la interacción en el orden correcto, es posible que desee buscar herramientas más avanzadas que solo la redirección de entrada y salida.
Por ejemplo, usandoesperar(1)podrías programar tu interacción de esta manera:
#!/usr/bin/expect
spawn "./c_program"
expect "Input number of feet traveled: "
send "5\r"
expect "Input number of seconds: "
send "2.5\r"
expect eof
Cuando ejecute el script, obtendrá la transcripción de toda la interacción automatizada.