假设我有一个普通的C程序,它将两个数字加在一起:
#include <stdio.h>
int main(void) {
int a, b;
printf("Enter a: "); scanf("%d", &a);
printf("Enter b: "); scanf("%d", &b);
printf("a + b = %d\n", a + b);
return 0;
}
除了手动输入到每一个它执行的时间termnial的,我输入的值a
,并b
到一个文件:
// input.txt
10
20
然后stdin
,我重定向到该文件:
./a.out < input.txt
该程序可以工作,但是其输出有点混乱:
Enter a: Enter b: a + b = 30
有没有一种方法可以将stdin重定向到stdout,以便输出看起来就像用户手动键入值一样,即:
Enter a: 10
Enter b: 20
a + b = 30
您可以为此使用期望。Expect是用于自动执行交互式命令行程序的工具。您可以通过以下方式自动键入这些值:
#!/usr/bin/expect
set timeout 20
spawn "./a.out"
expect "Enter a: " { send "10\r" }
expect "Enter b: " { send "20\r" }
interact
这将产生如下输出:
$ ./expect
spawn ./test
Enter a: 10
Enter b: 20
a + b = 30
还有更多的例子在这里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句