
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.