Expect的full_buffer
来源:互联网 发布:友笑网络 编辑:程序博客网 时间:2024/05/16 00:24
今天用Expect从一大堆输出中提取数据时出现问题,我是先把输出存入Tcl的一个字符串中再提取的,于是打印该字符串,发现只是屏幕输出的后一部分(而我想提取的值是在前半部分)。
起先以为是Tcl的字符串长度有限制,于是搜索“tcl字符串长度最大值”,未果,
后来改用GG搜索"tcl string length max",在一老外的论坛上有了结论,结论是Tcl对字符串长度可以说没有限制,达到21E多(4字节的int表示范围)。
于是怀疑是Expect的问题,
打印Expect_out(buffer)发现确实只保留了屏幕输出的后一部分,
在一个繁体网站上找到一个Match_max命令,以此为线索查看《Exploring Expect》,有个命令叫Match_max,可以设置匹配的最大长度
自己设置后没有效果,加-d后也不行,不知道为什么。。。
用Match_max搜索GG,有个老外碰到类似的问题,回答者是用full_buffer搞定的,看代码:
set mybuff ""expect {
-re {.*00\-\->} {
append mybuff $expect_out(buffer);
}
full_buffer {
append mybuff $expect_out(buffer);
# continue as only place to break out is match above and eof
exp_continue
}
eof {
append mybuff $expect_out(buffer);
puts "eof [string length $mybuff ]"
}
}
其大概思想是出现full_buffer时就把expect_out(buffer)缓存起来,最后再将mybuff返回,
照此改造了下代码,OK
但我的代码有时是走不到full_buffer这个分支里面的,也就是改造之前大概有一半概率是能执行成功的,不知道为什么。。已经折腾了一天,先不纠结这个了。
- Expect的full_buffer
- expect 的小点--expect的使用
- shell expect 的介绍
- expect的基本用法
- Expect 的基础知识 linux
- expect的基本用法
- linux expect的使用
- TCL/expect的使用
- expect的基本用法
- expect 的一个问题
- Expect 的基础知识 linux
- expect的安装使用
- expect的基本用法
- expect 的安装
- expect的基本用法
- 关于 EXPECT 的使用
- expect的基本用法
- expect的一点资料
- Swing获取除了windows任务栏之外的宽和高
- base-kernel-module
- 将office文档及图片转换为flash
- 精选最新优秀源码下载网站
- 排序算法
- Expect的full_buffer
- 精品JS代码收藏大全
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 第十章:同步设备IO与异步设备IO
- 如何得知自己正在使用的linux是什么版本
- 2012_02_03
- Unix 冒号命令
- 使用Flash在线制作头像
- Android软件界面嵌入广告的方法