Tcl Expect spawn-打开发送用户-两种不同的行为
很长一段时间后,我又回到了Tcl/Expect。对于defaultTcl Expect spawn-打开发送用户-两种不同的行为,tcl,expect,Tcl,Expect,很长一段时间后,我又回到了Tcl/Expect。对于defaultspawn\u id和explicit,Expect的行为似乎不一样。看来不是这样的 我正在Ubuntu上使用Expect 5.45。在输入文件input/input.found.txt上,如下所示: ~$ more input/input.found.txt hello World! hello <intentional blank new line> 我希望这两种情况的输出是相同的,但它们不是。我得到的结果是:
spawn\u id
和explicit,Expect的行为似乎不一样。看来不是这样的
我正在Ubuntu上使用Expect 5.45。在输入文件input/input.found.txt
上,如下所示:
~$ more input/input.found.txt
hello
World!
hello
<intentional blank new line>
我希望这两种情况的输出是相同的,但它们不是。我得到的结果是:
---
spawn [open ...]
hello
World!
hello
---
spawn [open ...]
hello
World!
hello
found
---
(请注意,在第一种情况下,找不到。
)
我关于产出的假设哪里错了?为什么通过
-i
(至少在文件处理情况下)明确指定spawn\u id
来改变发送用户
或放置
的行为?您的第一个expect命令不是您所想的。expect命令将采用单独的参数,或一个参数列表
第一个expect命令有3个参数,因此它将-i$file作为一个选项,指定spawn id,最后一个参数作为一个没有任何主体的模式。该多行模式与文件内容不匹配。但即使它这样做了,也不会打印任何内容,因为没有适合该图案的主体
第二个expect命令的所有参数都在大括号内。expect命令然后将该列表扩展为8个参数
程序最简单的修复方法是将-i$file1放在大括号内,如下所示:
expect {
-i $file1
-re ".ello" {
send_user "found\r\n"; # should print BUT doesn't print
}
-re ".orld" {
send_user "found the world!\r\n"; # shouldn't print, doesn't print
}
eof { puts "not found" }
}
您的第一个expect命令不是您所想的。expect命令将采用单独的参数,或一个参数列表 第一个expect命令有3个参数,因此它将-i$file作为一个选项,指定spawn id,最后一个参数作为一个没有任何主体的模式。该多行模式与文件内容不匹配。但即使它这样做了,也不会打印任何内容,因为没有适合该图案的主体 第二个expect命令的所有参数都在大括号内。expect命令然后将该列表扩展为8个参数 程序最简单的修复方法是将-i$file1放在大括号内,如下所示:
expect {
-i $file1
-re ".ello" {
send_user "found\r\n"; # should print BUT doesn't print
}
-re ".orld" {
send_user "found the world!\r\n"; # shouldn't print, doesn't print
}
eof { puts "not found" }
}
您是否已尝试在启用详细调试的情况下运行expect?听说这会有很大帮助。您是否尝试过在启用详细调试的情况下运行expect?我听说这会有很大帮助。