[英]Expect flushing buffer
我正在编写一个tcl / expect脚本来检查事件的字符串输出,如果找到则执行某些操作。 下面是我的代码,
proc cli_detect_event {cmd value} {
cli_send "$cmd"
expect -timeout 3 $value {
} timeout fail
}
因此,当我发送$ cmd时,我会得到希望与$ value相匹配的事件。 我想知道是否有一种方法可以防止在此proc之后再次使用Expect时,Expect_out(buffer)中的内容被扔掉,这样我就可以期望发送的命令在相同的输出上匹配?
Expect缓冲区变量与其spawn_id变量相关联,因此,为了确保使用您的Expect_out(buffer),您只需传入spawn id
proc cli_detect_event {cmd value spawnId } {
cli_send "$cmd"
expect -i $spawnId -timeout 3 $value {
} timeout fail
}
这应该可以解决您的问题。 唯一的事情是您需要确保在生成进程时保存spawn_id
AFAIK号
如果发生超时,则可以通过下一个Expect子句搜索缓冲区。 但是,如果$ value匹配,那么包括$ value本身在内的所有内容都将从缓冲区中丢弃(并打印给用户)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.