Как сделать подсчет перенаправленного ввода в качестве вывода команды
У меня есть простая консольная программа на C, которая принимает ввод с клавиатуры и выводит подсказки и расчеты. У меня также есть два текстовых файла: файл с входными данными для программы и файл, содержащий выходные данные, которые должна выдать программа.
Проблема в том, что
$ c_program < input_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
При выполнении сценария вы получите расшифровку всего автоматизированного взаимодействия.