没有合适的资源?快使用搜索试试~ 我知道了~
好书,非常不错的好书,十分详细啦的阿道夫
资源详情
资源评论
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/3966601/bg1.jpg)
Expect 教程中文版
创建时间:2001-04-29
文章属性:转载
文章来源:中国科大 BBS 站
[版权声明]
Copyright(c) 1999
本教程由*葫芦娃*翻译,并做了适当的修改,可以自由的用于非商业目的。
但 Redistribution 时必须拷贝本[版权声明]。
有不少部分,翻译的时候不能作到“信,达”。当然了,任何时候都没有做到“雅”,希望各位谅解。
原著
!!"
目录
#!摘要
$!关键字
%!简介
&!'() 综述
![](https://csdnimg.cn/release/download_crawler_static/3966601/bg2.jpg)
*!+
,!)-和一致性检查
.!和伪终端
/!)
0!+
#1!多进程控制:作业控制
##!交互式使用 '()
#$!交互式 '() 编程
#%!非交互式程序的控制
#&!'() 的速度
#*!安全方面的考虑
#,!'() 资源
#.!参考书籍
#!摘要
现代的 对程序提供了最小限度的控制2开始,停止,等等3,而把交互的特性留给了用户。这意味
着有些程序,你不能非交互的运行,比如说 )-。有一些程序可以非交互的运行,但在很大程度上丧
失了灵活性,比如说 +。这表明 ( 的工具构造逻辑开始出现问题。'() 恰恰填补了其中的一些
裂痕,解决了在 ( 环境中长期存在着的一些问题。
'() 使用 作为语言核心。不仅如此,不管程序是交互和还是非交互的,'() 都能运用。这
是一个小语言和 ( 的其他工具配合起来产生强大功能的经典例子。
本部分教程并不是有关 '() 的实现,而是关于 '() 语言本身的使用,这主要也是通过不同的脚
本描述例子来体现。其中的几个例子还例证了 '() 的几个新特征。
$!关键字
![](https://csdnimg.cn/release/download_crawler_static/3966601/bg3.jpg)
'()4交互,5674程序化的对话,44(8
%!简介
一个叫做 + 的 ( 文件系统检查程序,可以从 里面用9 或者9 选项来执行。 在手册#
里面,9 选项的定义是象这样的。
“对于 + 的所有问题都假定一个“:响应;在这样使用的时候,必须特别的小心,因为它实际上
允许程序无条件的继续运行,即使是遇到了一些非常严重的错误”
相比之下,9 选项就安全的多,但它实际上几乎一点用都没有。这种接口非常的糟糕,但是却有许
多的程序都是这种风格。 文件传输程序 ) 有一个选项可以禁止交互式的提问,以便能从一个脚本里面
运行。但一旦发生了错误,它没有提供的处理措施。
'() 是一个控制交互式程序的工具。他解决了 + 的问题,用非交互的方式实现了所有交互式的
功能。'() 不是特别为 + 设计的,它也能进行类似 ) 的出错处理。
+ 和 ) 的问题向我们展示了象 4 和别的一些 提供的用户接口的局限性。 没有
提供从一个程序读和象一个程序写的功能。这意味着 可以运行 + 但只能以牺牲一部分 + 的灵
活性做代价。有一些程序根本就不能被执行。比如说,如果没有一个用户接口交互式的提供输入,就没法
运行下去。其他还有象 4)44 等程序无法在 脚本里面自动执行。还有很多其他的
应用程序在设计是也是要求用户输入的。
'() 被设计成专门针和交互式程序的交互。一个 '() 程序员可以写一个脚本来描述程序和用
户的对话。接着 '() 程序可以非交互的运行“交互式”的程序。写交互式程序的脚本和写非交互式程序
的脚本一样简单。'() 还可以用于对对话的一部分进行自动化,因为程序的控制可以在键盘和脚本之
间进行切换。
![](https://csdnimg.cn/release/download_crawler_static/3966601/bg4.jpg)
$里面有详细的描述。简单的说,脚本是用一种解释性语言写的。2也有 ; 和 ;<<的 '() 库可供
使用,但这超出了本文的范围3!'() 提供了创建交互式进程和读写它们的输入和输出的命令。
'() 是由于它的一个同名的命令而命名的。
'() 语言是基于 的。 实际上是一个子程序库,这些子程序库可以嵌入到程序里从而提供语
言服务。 最终的语言有点象一个典型的 语言。里面有给变量赋值的 命令,控制程序执行的
44 等命令,还能进行普通的数学和字符串操作。当然了,还可以用 ( 来调用 ( 程序。
所有这些功能, 都有。 在参考书籍 6%&里有详细的描述。
'() 是在 基础上创建起来的,它还提供了一些 所没有的命令。)- 命令激活一个
( 程序来进行交互式的运行。 命令向进程发送字符串。() 命令等待进程的某些字符串。
() 支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。 () 还能理
解一些特殊情况,如超时和遇到文件尾。
() 命令和 的 命令的风格很相似。都是用一个字符串去匹配多个字符串。2只要有可能,
新的命令总是和已有的 命令相似,以使得该语言保持工具族的继承性3。下面关于 () 的定义是从
手册*上摘录下来的。
() )##)$$!!!!!
该命令一直等到当前进程的输出和以上的某一个模式相匹配,或者等 到时间超过一个特
定的时间长度,或者等到遇到了文件的结束为止。
如果最后一个 是空的,就可以省略它。
![](https://csdnimg.cn/release/download_crawler_static/3966601/bg5.jpg)
每一个 ) 都由一个模式或者模式的表23组成。如果有一个模式匹配成功,相应的
就被执行。执行的结果从 () 返回。
被精确匹配的字符串2或者当超时发生时,已经读取但未进行匹配的字符串3被存贮在变量
()= 里面。如果 ) 是 或者 4则发生文件结束或者超时时才执行相应的
!一般超时的时值是 #1 秒,但可以用类似> %1>之类的命令把超时时值设定为 %1 秒。
下面的一个程序段是从一个有关登录的脚本里面摘取的。 是在脚本的别处定义的过程,而
其他的 使用类似与 ; 语言的 原语。
()>?- ?> +
>??> @)8A
>??>
模式是通常的 ; 风格的正规表达式。模式必须匹配当前进程的从上一个 () 或者
开始的所有输出2所以统配符?使用的非常3的普遍。但是,一旦输出超过 $111 个字节,前面的
字符就会被忘记,这可以通过设定 = ( 的值来改变。
() 命令确实体现了 () 语言的最好和最坏的性质。特别是,() 命令的灵活性是以经常
出现令人迷惑的语法做代价。除了关键字模式 2比如说 4 3那些模式表可以包括多个模式。这保
证提供了一种方法来区分他们。但是分开这些表需要额外的扫描,如果没有恰当的用 >括起来,这有可
能会把和当成空白字符。由于 提供了两种字符串引用的方法:单引和双引,情况变的更糟。2在 里
面,如果不会出现二义性话,没有必要使用引号3。在 () 的手册里面,还有一个独立的部分来解释
这种复杂性。幸运的是:有一些很好的例子似乎阻止了这种抱怨。但是,这个复杂性很有可能在将来的版
本中再度出现。为了增强可读性,在本文中,提供的脚本都假定双引号是足够的。
字符可以使用反斜杠来单独的引用,反斜杠也被用于对语句的延续,如果不加反斜杠的话,语句到一
行的结尾处就结束了。这和 也是一致的。 在发现有开的单引号或者开的双引号时都会继续扫描。
剩余34页未读,继续阅读
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![fzip](https://img-home.csdnimg.cn/images/20210720083646.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
hello_zcs
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论0