探索 Expect:自动化交互工具的全面指南
1. Expect 简介
1.1 Expect 的魅力与挑战
Expect 是一款用于自动化交互工具的软件套件,它广受欢迎。其优势在于让人们能更轻松地完成任务,甚至能实现以往不敢尝试的操作。它并非普通语言,而是一种全新工具,能解决过去未被察觉的问题。
然而,随着功能不断增加,它变得愈发复杂。尽管有 25 页的“手册页”,但人们仍不断索取手册中未涵盖的信息,如示例和建议。本书旨在以教程形式详细阐述 Expect 的方方面面,同时也会提及它的局限性。
1.2 为何需要 Expect
起初,作者认为 Expect 不会长久,只是为证明交互自动化通用方法的必要性而做的实验,期望当时流行的 shell 能集成相关功能。但现实并非如此,多数 shell 缺乏对伪终端的访问和内联流模式匹配功能。
此外,像 Emacs 和 Perl 等环境虽有类似功能,但使用不便。相比之下,Expect 简单且专注于自动化交互程序,同时它基于 Tcl,提供了良好的工作环境。
1.3 Tcl 的历史渊源
Tcl 是一种小巧且简单的嵌入式语言,它是 Expect 背后的支撑。Tcl 强大而优雅,在原语与可扩展性、简单性与过度复杂性之间取得了平衡。
作者最初想编写类似 Expect 的程序,但苦于没有合适的可扩展控制语言。1990 年,在华盛顿特区的 Winter USENIX 会议上,作者了解到 John Ousterhout 设计的 Tcl 语言,它正好满足需求。下载 Tcl 八天后,作者就有了一个原始但可用的 Expect。