
У меня есть простая консольная программа на языке 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
При выполнении скрипта вы получите расшифровку всего автоматизированного взаимодействия.