3.TCL脚本学习——expect

来源:互联网 发布:辣酱油 知乎 编辑:程序博客网 时间:2024/05/18 13:11

3.TCL脚本学习——expect

Expect 是 Tcl 和 Tk 语言的扩展。Expect 为使交互式程序的脚本编制自动化,提供了简单而功效强大的接口。另外,Expect 使交互式应用程序嵌入 GUI 变得容易。Expect 的开发与 Tcl/Tk 的出现是同时发生的。

Expect 的作者是 Don Libes,他在美国国家标准与技术学会(NIST)工作。Expect主页驻留在 NIST 服务器上。(然而,Expect和任何相关的商业或非商业产品显然都未经 NIST 认可。)

为什么要学习 Expect?引用 Don 论文中的一句话,“使用 expect,使系统管理任务自动化”(USENIX LISA 会议 1990 年 10 月)“……结果是 UNIX 系统管理员的工具箱里充斥着曾经见到过的一些最差的用户界面。只有完全重新设计才能帮助解决所有这些问题,expect 可用来处理许多这些问题。”

当脚本调用交互式程序时,缺省情况下,Expect 拦截所有输入和输出(STDIN、STDOUT 和 STDERR)。这允许 Expect 搜索与程序输出匹配的模式,并将输入发送到产生的进程,以模拟用户交互。另外,Expect 可以将进程的控制传递给用户(如果这样指示的话),或者根据请求控制。

这些特性不仅使Expect 对于公共管理任务变得非常有用,而且证实了 Expect 有益于构建测试脚本,以在程序开发期间执行 I/O 验证。

最后,有一个极其有用的程序 autoexpect。它本身是一个Expect 脚本,autoexpect 监控命令行交互式程序,生成精确复制该交互的 Expect 脚本。现在,虽然通常不需要它,但很容易拿几个 autoexpect 会话的结果,概括 expect 模式,然后将它们剪贴到期望的配置中。已经在多处提到过,学习 Expect 的最佳工具是运行 autoexpect 并使用这些结果。

原创粉丝点击