expect_out(buffer)中包含send的数据
来源:互联网 发布:苹果mac全选快捷键 编辑:程序博客网 时间:2024/06/14 20:38
expect_out(buffer)中包含send的数据
我一直以为在Expect中一旦执行send之后,expect_out(buffer)就会被清空,直到有新的数据被填入,而恰恰就是这些数据被用在expect语句中。而今天在调试时发现的问题却令我大吃一惊,原来expect_out(buffer)不会被自动清空,而expect到的数据很可能不是你真正想要的,非常有可能是历史数据。"expect_out(buffer) has the content of the previous send" 一文也指出了这个问题。
比如在我的代码中,有如下片段:
无论$lockfile是否存在,expect总会得到COOLID: 68,而expect_out(buffer)的出如下:
由此可见,由于expect_out(buffer)中含有send的echo "COOLID: 68",因此永远都能匹配到这个数据。
由于没有找到一种可以清空expect_out(buffer)的方法,无法实时地将expect_out(buffer)清空。我能想到的解决方法有两种:一是更改send和expect的内容或方式,避免send的内容中出现expect的模式(pattern)。比如在我的程序中把上述代码段改为:
就可以正常工作了。
另一种方法是按照"expect_out(buffer) has the content of the previous send"的例子中的方法,set prompt,保持原始代码中send的内容不变,将expect的正则表达式改为 -re "fi(.*)$prompt",如此一来希望的输出就在expect_out(1,string)中了,然后利用string或者lsearch命令对匹配到的数据进行分析。
结论:今后在编写Expect脚本时,不仅要考虑每一步的send/expect,也还要考虑到这一步的expect的内容有可能出现在之前的历史数据中。
- expect_out(buffer)中包含send的数据
- expect_out
- PHP中接收send/POST/GET发送的数据
- send成功但是数据还在Send-Q中
- 数据中包含回车的问题
- Oracle数据字典中包含的视图
- windows socket编程中send与recv函数的收发数据不一致问题
- 在NIO中如何循环将Channel的数据写到Buffer中??
- Java中 Buffer的作用
- muduo中buffer的设计
- vs2003中将数据邦定到combobox中包含空行的方法
- oracle中,如何插入包含单个撇号的数据
- #define 定义的数据中包含有UL符号
- Flexigrid无法正常显示数据中包含的空格
- MATLAB 中求解包含所有数据点的最小凸多边形
- 包含多个段的程序--在代码段中使用数据
- unity中UnityEngine.EventSystems类PointerEventData包含的属性数据
- Android 字符串中包含动态获取的数据
- js-window对象
- 原创:SQL Server的通用分页存储过程,未使用游标,速度更快!
- JS刷新当前页面
- spring Transaction
- CXIMAGE wince移植
- expect_out(buffer)中包含send的数据
- 调用约定(__stdcall and __cdecl)和修饰名(extern c)
- core data
- 分数 TO 小数
- Keep the console open long enough to see your program's output
- 我的答案
- maven 将自己的jar放到中心仓储以供使用
- Informix Dynamic Server 用户界面工具入门
- Discuz!论坛通行证与JSP网站的整合