Как сделать так, чтобы перенаправленный ввод учитывался как вывод команды

Как сделать так, чтобы перенаправленный ввод учитывался как вывод команды

У меня есть простая консольная программа на языке C, которая принимает ввод с клавиатуры и выводит подсказки и вычисления. У меня также есть два текстовых файла: файл с вводом для программы и файл, содержащий вывод, который должна выдавать программа.

Проблема в том, что

$ c_program < input_file > output_file

не отображает ввод в выходной файл. Output_file будет содержать только подсказки и вычисления без перенаправленного ввода. Как мне сделать так, чтобы ввод соответствовал выводу, чтобы выходной файл выглядел так же, как при вводе с клавиатуры?

Например, вот пример сеанса:

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

Но при перенаправлении ввода и вывода получаем:

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

Как сделать так, чтобы второй вариант был похож на первый?

решение1

Для написания сценария взаимодействия с программой и записи взаимодействия в правильном порядке вам, возможно, стоит рассмотреть более продвинутые инструменты, чем просто перенаправление ввода и вывода.

Например, используяожидать(1)Вы можете запрограммировать свое взаимодействие следующим образом:

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

При выполнении скрипта вы получите расшифровку всего автоматизированного взаимодействия.

Связанный контент