У меня есть простая консольная программа на 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

0

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

Например, используя функцию ожидаемости (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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .