Como fazer com que a entrada redirecionada conte como saída de comando

Como fazer com que a entrada redirecionada conte como saída de comando

Eu tenho um programa de console C simples que recebe algumas entradas do teclado e gera prompts e cálculos. Também tenho dois arquivos de texto: um arquivo com a entrada do programa e um arquivo que contém a saída que o programa deve fornecer.

O problema é que

$ c_program < input_file > output_file

não ecoa a entrada no arquivo de saída. O output_file terá apenas os prompts e cálculos, sem a entrada redirecionada. Como faço para que a entrada se encaixe na saída para que o arquivo de saída fique exatamente como quando a entrada é fornecida com o teclado?

Por exemplo, aqui está um exemplo de sessão:

Input number of feet traveled: 5
Input number of seconds: 2.5
Average speed is 2.0 feet per second

Mas ao redirecionar a entrada e a saída, obtemos:

Input number of feet traveled: Input number of seconds: Average speed is 2.0 feet per second

Como posso fazer o segundo parecer com o primeiro?

Responder1

Para criar scripts de uma interação com um programa enquanto captura a interação na ordem correta, você pode querer procurar ferramentas mais avançadas do que apenas o redirecionamento de entrada e saída.

Por exemplo, usandoesperar (1)você poderia criar um script de sua interação assim:

#!/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

Ao executar o script, você obterá a transcrição de toda a interação automatizada.

informação relacionada