我正在尝试使用 Expect 与一个长时间运行的交互式进程交谈。我正在使用 cat -un 来模拟该过程。我的代码如下:
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
my $timeout = 4000;
my $exp = Expect->spawn("cat -un");
my $text = <STDIN>;
$exp->send($text);
$text = <STDIN>;
$exp->send($text);
$exp->expect(undef); # Forever until EOF
$exp->expect($timeout); # For a few seconds
$exp->expect(0);
$text = <STDIN>;
$exp->send($text);
$exp->expect(undef); # Forever until EOF
$exp->expect($timeout); # For a few seconds
$exp->expect(0);
我按第一个字符串 + enter 并没有得到任何输出(显然)。我输入第二个字符串,然后按回车键,从 cat -un 转储到屏幕的标准输出。我的第三个字符串不会产生任何输出,但我希望它也能将标准输出转储到屏幕上。
我的目标是与将文本放在屏幕上的交互式进程进行通信(要求用户从菜单中进行选择),然后让用户输入响应并将其发送到进程(生成更多输出和更多菜单)。
Expect 似乎是最简单的方法。请协助我。