Como fazer a entrada redirecionada contar como saída de comando

0

Eu tenho um programa simples do console C que recebe algumas entradas e saídas de teclado e prompts e cálculos. Eu também tenho dois arquivos de texto: um arquivo com entrada para o 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 faz eco da entrada para o arquivo de saída. O output_file terá apenas os prompts e cálculos, sem a entrada redirecionada. Como eu faço a entrada se encaixar com a saída para que o arquivo de saída fique exatamente como quando a entrada é dada com o teclado?

Por exemplo, aqui está uma sessão de amostra:

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

Mas ao redirecionar entrada e saída, obtemos:

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

Como posso fazer com que o segundo pareça o primeiro?

    
por JasonMel 18.01.2014 / 01:04

1 resposta

0

Para criar scripts de uma interação com um programa durante a captura de interação na ordem correta, convém examinar ferramentas mais avançadas do que apenas o redirecionamento de entrada e saída.

Por exemplo, usando expect (1) você poderia criar um script da 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

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

    
por 19.01.2014 / 10:27