TCL脚本仅保存输出的下半部分

时间:2015-03-01 14:45:04

标签: bash tcl buffer expect unset

我有脚本登录到设备并运行show命令。 然后我将此输出设置为变量:

set output $expect_out(buffer)

然后将变量打印到文件:

puts $fileId $output

当脚本运行时,我可以看到生成的整个输出,但是在文件中,只保存了输出的下半部分。

这可能是因为缓冲区达到了极限。此show命令正在另一个冗长的show命令之后运行。

我尝试使用unset expect_out(buffer),但这仍然没有什么区别。

我也试过这个解决方案http://wiki.tcl.tk/2958但它仍然无效(返回错误) 如何让脚本存储所有输出?

2 个答案:

答案 0 :(得分:1)

我在expect手册页中看到,当缓冲区的大小达到full_buffer字节时,模式match_max将匹配,所以你可以这样做:

match_max 16000
# ...
expect {
    full_buffer {
        puts $fileid $expect_out(buffer)
        exp_continue
    }
    "whatever you are currently expecting"
}
puts $fileid $expect_out(buffer)

答案 1 :(得分:0)

您还可以使用log_file来简化操作。您可以控制何时保存以及何时停止记录。

查看here以了解相同内容。