如何使重定向输入计为命令输出

如何使重定向输入计为命令输出

我有一个简单的 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

当您执行脚本时,您将获得整个自动交互的记录。

相关内容