当前位置:文档之家› expect经典教程

expect经典教程

expect经典教程
expect经典教程

expect expect

expect

教程现代的Shell 对程序提供了最小限度的控制(开始,停止,等等),而把交互的特性留给了用户。这意味着有些程序,你不能非交互的运行,比如说passwd 。有一些程序可以非交互的运行,但在很大程度上丧失了灵活性,比如说fsck 。

这表明Unix 的工具构造逻辑开始出现问题。Expect 恰恰填补了其中的一些裂痕,解决了在Unix 环境中长期存在着的一些问题。

Expect 使用Tcl 作为语言核心。不仅如此,不管程序是交互和还是非交互的,Expect 都能运用。这是一个小语言和Unix 的其他工具配合起来产生强大功能的经典例子。

本部分教程并不是有关Expect 的实现,而是关于Expect 语言本身的使用,这主要也是通过不同的脚本描述例子来体现。其中的几个例子还例证了Expect 的几个新特征。

2.[关键字]

Expect,交互,POSIX,程序化的对话,Shell,Tcl,Unix;

3.[简介]

一个叫做fsck 的Unix 文件系统检查程序,可以从Shell 里面用-y 或者-n 选项来执行。在手册[1]里面,-y 选项的定义是象这样的。

1

“对于fsck的所有问题都假定一个“yes”响应;在这样使用的时候,必须特别的小心,因为它实际上允许程序无条件的继续运行,即使是遇到了一些非常严重的错误”,相比之下,-n选项就安全的多,但它实际上几乎一点用都没有。这种接口非常的糟糕,但是却有许多的程序都是这种风格。文件传输程序ftp有一个选项可以禁止交互式的提问,以便能从一个脚本里面运行。但一旦发生了错误,它没有提供的处理措施。

Expect是一个控制交互式程序的工具。他解决了fsck的问题,用非交互的方式实现了所有交互式的功能。Expect不是特别为fsck设计的,它也能进行类似ftp 的出错处理。

fsck和ftp的问题向我们展示了象sh,csh和别的一些shell提供的用户接口的局限性。Shell没有提供从一个程序读和象一个程序写的功能。这意味着shell 可以运行fsck但只能以牺牲一部分fsck的灵活性做代价。有一些程序根本就不能

被执行。比如说,如果没有一个用户接口交互式的提供输入,就没法运行下去。其他还有象Telnet,crypt,su,rlogin等程序无法在shell脚本里面自动执行。还有很多其他的应用程序在设计是也是要求用户输入的。

Expect被设计成专门针和交互式程序的交互。一个Expect程序员可以写一个脚本来描述程序和用户的对话。接着Expect程序可以非交互的运行“交互式”的程序。写交互式程序的脚本和写非交互式程序的脚本一样简单。Expect还可以用于对对话的一部分进行自动化,因为程序的控制可以在键盘和脚本之间进行切换。bes[2]里面有详细的描述。简单的说,脚本是用一种解释性语言写的。(也有C和C++的Expect库可供使用,但这超出了本文

的范围).Expect提供了创建交互式进程和读写它们的输入和输出的命令。Expect 是由于它的一个同名的命令而命名的。

Expect语言是基于Tcl的。Tcl实际上是一个子程序库,这些子程序库可以嵌入到程序里从而提供语言服务。最终的

语言有点象一个典型的Shell语言。里面有给变量赋值的set命令,控制程序执行的if,for,continue等命令,还能进行普通

的数学和字符串操作。当然了,还可以用exec来调用Unix程序。所有这些功能,Tcl都有。Tcl在参考书籍Outerhour[3][4]

里有详细的描述。

Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令。spawn 命令激活一个Unix程序来进行交互式的运行。

send命令向进程发送字符串。expect命令等待进程的某些字符串。expect支持正规表达式并能同时等待多个字符串,并对

每一个字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。

expect命令和Tcl的case命令的风格很相似。都是用一个字符串去匹配多个字符串。(只要有可能,新的命令总是和已

有的Tcl命令相似,以使得该语言保持工具族的继承性)。下面关于expect的定义是从手册[5]上摘录下来的。

expect patlist1action1patlist2action2.....

该命令一直等到当前进程的输出和以上的某一个模式相匹配,或者等

到时间超过一个特定的时间长度,或者等到遇到了文件的结束为止。

如果最后一个action是空的,就可以省略它。

每一个patlist都由一个模式或者模式的表(lists)组成。如果有一个模式匹配成功,相应的action就被执行。执

行的结果从expect返回。

被精确匹配的字符串(或者当超时发生时,已经读取但未进行匹配的字符串)被存贮在变量expect_match里面。如果patlist是eof或者timeout,则发生文件结束或者超时时才执行相应的action.一般超时的时值是10秒,但可以用类似"set timeout30"之类的命令把超时时值设定为30秒。

下面的一个程序段是从一个有关登录的脚本里面摘取的。abort是在脚本的别处定义的过程,而其他的action使用类似与C语言的Tcl原语。

expect"*welcome*"break

"*busy*"{print busy;continue}

"*failed*"abort

timeout abort

模式是通常的C Shell风格的正规表达式。模式必须匹配当前进程的从上一个expect或者interact开始的所有输出(所以统配符*使用的非常)的普遍。但是,一旦输出超过2000个字节,前面的字符就会被忘记,这可以通过设定match_max 的值来改变。

expect命令确实体现了expect语言的最好和最坏的性质。特别是,expect命令的灵活性是以经常出现令人迷惑的语法

做代价。除了关键字模式(比如说eof,timeout)那些模式表可以包括多个模式。这保证提供了一种方法来区分他们。但是分开这些表需要额外的扫描,如果没有恰当的用["]括起来,这有可能会把和当成空白字符。由于Tcl提供了两种字符串引用的方法:单引和双引,情况变的更糟。(在Tcl里面,如果不会出现二义性话,没有必要使用引号)。在expect的手册里面,还有一个独立的部分来解释这种复杂性。幸运的是:有一些很好的例子似乎阻止了这种抱怨。但是,这个复杂性很有可能

在将来的版本中再度出现。为了增强可读性,在本文中,提供的脚本都假定双引号是足够的。

字符可以使用反斜杠来单独的引用,反斜杠也被用于对语句的延续,如果不加反斜杠的话,语句到一行的结尾处就结束了。这和Tcl也是一致的。Tcl在发现有开的单引号或者开的双引号时都会继续扫描。而且,分号可以用于在一行中分割

多个语句。这乍听起来有点让人困惑,但是,这是解释性语言的风格,但是,这确实是Tcl的不太漂亮的部分。

5.[callback]

令人非常惊讶的是,一些小的脚本如何的产生一些有用的功能。下面是一个拨电话号码的脚本。他用来把收费反向,以便使得长途电话对计算机计费。这个脚本用类似“expect callback.exp12016442332”来激活。其中,脚本的名字便

是callback.exp,而+1(201)644-2332是要拨的电话号码。

#first give the user some time to logout

exec sleep4

spawn tip modem

expect"*connected*"

send"ATD[index$argv1]"

#modem takes a while to connect

set timeout60

expect"*CONNECT*"

第一行是注释,第二行展示了如何调用没有交互的Unix程序。sleep4会使程序阻塞4秒,以使得用户有时间来退出,

因为modem总是会回叫用户已经使用的电话号码。

下面一行使用spawn命令来激活tip程序,以便使得tip的输出能够被expect 所读取,使得tip能从send读输入。一旦

tip说它已经连接上,modem就会要求去拨打大哥电话号码。(假定modem都是贺氏兼容的,但是本脚本可以很容易的修改

成能适应别的类型的modem)。不论发生了什么,expect都会终止。如果呼叫失败,expect脚本可以设计成进行重试,但这里没有。如果呼叫成功,getty会在expect 退出后检测到DTR,并且向用户提示loging:。(实用的脚本往往提供更多的

错误检测)。

这个脚本展示了命令行参数的使用,命令行参数存贮在一个叫做argv的表里面(这和C语言的风格很象)。在这种情况

下,第一个元素就是电话号码。方括号使得被括起来的部分当作命令来执行,结果就替换被括起来的部分。这也和

C Shell的风格很象。

这个脚本和一个大约60K的C语言程序实现的功能相似

[版权声明]

Copyright(c)1999

本教程由*葫芦娃*翻译,并做了适当的修改,可以自由的用于非商业目的。

但Redistribution时必须拷贝本[版权声明]。

[BUG]

有不少部分,翻译的时候不能作到“信,达”。当然了,任何时候都没有做到“雅”,希望各位谅解。

[原著]

Don Libes:National Institute of Standards and Technology

libes@https://www.doczj.com/doc/de8507227.html,

[目录]

1.摘要

2.关键字

3.简介

4.Expect综述

5.callback

6.passwd和一致性检查

7.rogue和伪终端

8.ftp

9.fsck

10.多进程控制:作业控制

11.交互式使用Expect

12.交互式Expect编程

13.非交互式程序的控制

14.Expect的速度

15.安全方面的考虑

16.Expect资源

17.参考书籍

1.[摘要]

现代的Shell对程序提供了最小限度的控制(开始,停止,等等),而把交互的特性留给了用户。这意味着有些程序,

你不能非交互的运行,比如说passwd。有一些程序可以非交互的运行,但在很大程度上丧失了灵活性,比如说fsck。

这表明Unix的工具构造逻辑开始出现问题。Expect恰恰填补了其中的一些裂痕,解决了在Unix环境中长期存在着的一些

问题。

Expect使用Tcl作为语言核心。不仅如此,不管程序是交互和还是非交互的,Expect都能运用。这是一个小语言和Unix

的其他工具配合起来产生强大功能的经典例子。

本部分教程并不是有关Expect的实现,而是关于Expect语言本身的使用,这主要也是通过不同的脚本描述例子来体现。

其中的几个例子还例证了Expect的几个新特征。

2.[关键字]

Expect,交互,POSIX,程序化的对话,Shell,Tcl,Unix;

3.[简介]

一个叫做fsck的Unix文件系统检查程序,可以从Shell里面用-y或者-n选项来执行。在手册[1]里面,-y选项的定

义是象这样的。

“对于fsck的所有问题都假定一个“yes”响应;在这样使用的时候,必须特别的小心,因为它实际上允许程序无条

件的继续运行,即使是遇到了一些非常严重的错误”

相比之下,-n选项就安全的多,但它实际上几乎一点用都没有。这种接口非常的糟糕,但是却有许多的程序都是这种

风格。文件传输程序ftp有一个选项可以禁止交互式的提问,以便能从一个脚本里面运行。但一旦发生了错误,它没有

提供的处理措施。

Expect是一个控制交互式程序的工具。他解决了fsck的问题,用非交互的方式实现了所有交互式的功能。Expect不是

特别为fsck设计的,它也能进行类似ftp的出错处理。

fsck和ftp的问题向我们展示了象sh,csh和别的一些shell提供的用户接口的局限性。Shell没有提供从一个程序读

和象一个程序写的功能。这意味着shell可以运行fsck但只能以牺牲一部分fsck 的灵活性做代价。有一些程序根本就不能

被执行。比如说,如果没有一个用户接口交互式的提供输入,就没法运行下去。其他还有象Telnet,crypt,su,rlogin等程

序无法在shell脚本里面自动执行。还有很多其他的应用程序在设计是也是要求用户输入的。

Expect被设计成专门针和交互式程序的交互。一个Expect程序员可以写一个脚本来描述程序和用户的对话。接着Expect

程序可以非交互的运行“交互式”的程序。写交互式程序的脚本和写非交互式程序的脚本一样简单。Expect还可以用于对对

话的一部分进行自动化,因为程序的控制可以在键盘和脚本之间进行切换。

bes[2]里面有详细的描述。简单的说,脚本是用一种解释性语言写的。(也有C和

C++的Expect库可供使用,但这超出了本文

的范围).Expect提供了创建交互式进程和读写它们的输入和输出的命令。Expect 是由于它的一个同名的命令而命名的。

Expect语言是基于Tcl的。Tcl实际上是一个子程序库,这些子程序库可以嵌入到程序里从而提供语言服务。最终的

语言有点象一个典型的Shell语言。里面有给变量赋值的set命令,控制程序执行的if,for,continue等命令,还能进行普通

的数学和字符串操作。当然了,还可以用exec来调用Unix程序。所有这些功能,Tcl都有。Tcl在参考书籍Outerhour[3][4]

里有详细的描述。

Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令。spawn 命令激活一个Unix程序来进行交互式的运行。

send命令向进程发送字符串。expect命令等待进程的某些字符串。expect支持正规表达式并能同时等待多个字符串,并对

每一个字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。

expect命令和Tcl的case命令的风格很相似。都是用一个字符串去匹配多个字符串。(只要有可能,新的命令总是和已

有的Tcl命令相似,以使得该语言保持工具族的继承性)。下面关于expect的定义是从手册[5]上摘录下来的。

expect patlist1action1patlist2action2.....

该命令一直等到当前进程的输出和以上的某一个模式相匹配,或者等到时间超过一个特定的时间长度,

或者等到遇到了文件的结束为止。

如果最后一个action是空的,就可以省略它。

每一个patlist都由一个模式或者模式的表(lists)组成。如果有一个模式匹配成功,相应的action就被执行。执

行的结果从expect返回。

被精确匹配的字符串(或者当超时发生时,已经读取但未进行匹配的字符串)被存贮在变量expect_match里面。如

果patlist是eof或者timeout,则发生文件结束或者超时时才执行相应的action.一般超时的时值是10秒,但可以用类似

"set timeout30"之类的命令把超时时值设定为30秒。

下面的一个程序段是从一个有关登录的脚本里面摘取的。abort是在脚本的别处定义的过程,而其他的action使用

类似与C语言的Tcl原语。

expect"*welcome*"break

"*busy*"{print busy;continue}

"*failed*"abort

timeout abort

模式是通常的C Shell风格的正规表达式。模式必须匹配当前进程的从上一个expect或者interact开始的所有输

出(所以统配符*使用的非常)的普遍。但是,一旦输出超过2000个字节,前面的字符就会被忘记,这可以通过设定

match_max的值来改变。

expect命令确实体现了expect语言的最好和最坏的性质。特别是,expect命令的灵活性是以经常出现令人迷惑的语法

做代价。除了关键字模式(比如说eof,timeout)那些模式表可以包括多个模式。这保证提供了一种方法来区分他们。但是分

开这些表需要额外的扫描,如果没有恰当的用["]括起来,这有可能会把和当成空白字符。由于Tcl提供了两种字符串引用

的方法:单引和双引,情况变的更糟。(在Tcl里面,如果不会出现二义性话,没有必要使用引号)。在expect的手册里面,

还有一个独立的部分来解释这种复杂性。幸运的是:有一些很好的例子似乎阻止了这种抱怨。但是,这个复杂性很有可能

在将来的版本中再度出现。为了增强可读性,在本文中,提供的脚本都假定双引号是足够的。

字符可以使用反斜杠来单独的引用,反斜杠也被用于对语句的延续,如果不加反斜杠的话,语句到一行的结尾处就结

束了。这和Tcl也是一致的。Tcl在发现有开的单引号或者开的双引号时都会继续

扫描。而且,分号可以用于在一行中分割

多个语句。这乍听起来有点让人困惑,但是,这是解释性语言的风格,但是,这确实是Tcl的不太漂亮的部分。

5.[callback]

令人非常惊讶的是,一些小的脚本如何的产生一些有用的功能。下面是一个拨电话号码的脚本。他用来把收费反向,

以便使得长途电话对计算机计费。这个脚本用类似“expect callback.exp 12016442332”来激活。其中,脚本的名字便

是callback.exp,而+1(201)644-2332是要拨的电话号码。

#first give the user some time to logout

exec sleep4

spawn tip modem

expect"*connected*"

send"ATD[index$argv1]"

#modem takes a while to connect

set timeout60

expect"*CONNECT*"

第一行是注释,第二行展示了如何调用没有交互的Unix程序。sleep4会使程序阻塞4秒,以使得用户有时间来退出,

因为modem总是会回叫用户已经使用的电话号码。

下面一行使用spawn命令来激活tip程序,以便使得tip的输出能够被expect 所读取,使得tip能从send读输入。一旦

tip说它已经连接上,modem就会要求去拨打大哥电话号码。(假定modem都是贺氏兼容的,但是本脚本可以很容易的修改

成能适应别的类型的modem)。不论发生了什么,expect都会终止。如果呼叫失败,expect脚本可以设计成进行重试,但

这里没有。如果呼叫成功,getty会在expect退出后检测到DTR,并且向用户提示loging:。(实用的脚本往往提供更多的

错误检测)。

这个脚本展示了命令行参数的使用,命令行参数存贮在一个叫做argv的表里面(这和C语言的风格很象)。在这种情况

下,第一个元素就是电话号码。方括号使得被括起来的部分当作命令来执行,结果就替换被括起来的部分。这也和

C Shell的风格很象。

这个脚本和一个大约60K的C语言程序实现的功能相似。

6.[passwd和一致性检查]

在前面,我们提到passwd程序在缺乏用户交互的情况下,不能运行,passwd 会忽略I/O重定向,也不能嵌入到管道里

边以便能从别的程序或者文件里读取输入。这个程序坚持要求真正的与用户进行交互。因为安全的原因,passwd被设计

成这样,但结果导致没有非交互式的方法来检验passwd。这样一个对系统安全至关重要的程序竟然没有办法进行可靠的

检验,真实具有讽刺意味。

passwd以一个用户名作为参数,交互式的提示输入密码。下面的expect脚本以用户名和密码作为参数而非交互式的运行。

spawn oasswd[index$argv1]

set password[index$argv2]

expect"*password:"

send"$password"

expect"*password:"

send"$password"

expect eof

第一行以用户名做参数启动passwd程序,为方便起见,第二行把密码存到一个变量里面。和shell类似,变量的使用也

不需要提前声明。

在第三行,expect搜索模式"*password:",其中*允许匹配任意输入,所以对于避免指定所有细节而言是非常有效的。

上面的程序里没有action,所以expect检测到该模式后就继续运行。

一旦接收到提示后,下一行就就把密码送给当前进程。表明回车。(实际上,所有的C的关于字符的约定都支持)。上面

的程序中有两个expect-send序列,因为passwd为了对输入进行确认,要求进行两次输入。在非交互式程序里面,这是毫无

必要的,但由于假定passwd是在和用户进行交互,所以我们的脚本还是这样做了。

最后,"expect eof"这一行的作用是在passwd的输出中搜索文件结束符,这一行语句还展示了关键字的匹配。另外一

个关键字匹配就是timeout了,timeout被用于表示所有匹配的失败而和一段特定长度的时间相匹配。在这里eof是非常有必

要的,因为passwd被设计成会检查它的所有I/O是否都成功了,包括第二次输入密码时产生的最后一个新行。

这个脚本已经足够展示passwd命令的基本交互性。另外一个更加完备的例子回检查别的一些行为。比如说,下面的这

个脚本就能检查passwd程序的别的几个方面。所有的提示都进行了检查。对垃圾输入的检查也进行了适当的处理。进程死

亡,超乎寻常的慢响应,或者别的非预期的行为都进行了处理。

spawn passwd[index$argv1]

expect eof{exit1}

timeout{exit2}

"*No such user.*"{exit3}

"*New password:"

send"[index$argv2"

expect eof{exit4}

timeout{exit2}

"*Password too long*"{exit5}

"*Password too short*"{exit5}

"*Retype ew password:"

send"[index$argv3]"

expect timeout{exit2}

"*Mismatch*"{exit6}

"*Password unchanged*"{exit7}

""

expect timeout{exit2}

"*"{exit6}

eof

这个脚本退出时用一个数字来表示所发生的情况。0表示passwd程序正常运行,1表示非预期的死亡,2表示锁定,等等。

使用数字是为了简单起见。expect返回字符串和返回数字是一样简单的,即使是派生程序自身产生的消息也是一样的。实际

上,典型的做法是把整个交互的过程存到一个文件里面,只有当程序的运行和预期一样的时候才把这个文件删除。否则这个

log被留待以后进一步的检查。

这个passwd检查脚本被设计成由别的脚本来驱动。这第二个脚本从一个文件里面读取参数和预期的结果。对于每一个输

入参数集,它调用第一个脚本并且把结果和预期的结果相比较。(因为这个任务是非交互的,一个普通的老式shell就可以用

来解释第二个脚本)。比如说,一个passwd的数据文件很有可能就象下面一样。

passwd.exp3bogus--

passwd.exp0fred abledabl abledabl

passwd.exp5fred abcdefghijklm-

passwd.exp5fred abc-

passwd.exp6fred foobar bar

passwd.exp4fred^C-

第一个域的名字是要被运行的回归脚本。第二个域是需要和结果相匹配的退出值。第三个域就是用户名。第四个域和

第五个域就是提示时应该输入的密码。减号仅仅表示那里有一个域,这个域其实绝对不会用到。在第一个行中,bogus表示

用户名是非法的,因此passwd会响应说:没有此用户。expect在退出时会返回3,3恰好就是第二个域。在最后一行中,^C就

是被切实的送给程序来验证程序是否恰当的退出。

通过这种方法,expect可以用来检验和调试交互式软件,这恰恰是IEEE的POSIX1003.2(shell和工具)的一致性检验所

要求的。进一步的说明请参考Libes[6]。

7.[rogue和伪终端]

Unix用户肯定对通过管道来和其他进程相联系的方式非常的熟悉(比如说:一个shell管道)。expect使用伪终端来和派

生的进程相联系。伪终端提供了终端语义以便程序认为他们正在和真正的终端进行I/O操作。

比如说,BSD的探险游戏rogue在生模式下运行,并假定在连接的另一端是一个可寻址的字符终端。可以用expect编程,

使得通过使用用户界面可以玩这个游戏。

rogue这个探险游戏首先提供给你一个有各种物理属性,比如说力量值,的角色。在大部分时间里,力量值都是16,但

在几乎每20次里面就会有一个力量值是18。很多的rogue玩家都知道这一点,但没有人愿意启动程序20次以获得一个好的配

置。下面的这个脚本就能达到这个目的。

for{}{1}{}{

spawn rogue

expect的用法讲解

e x p e c t的用法讲解 Prepared on 22 November 2020

expect的用法讲解 很多童鞋都知道expect的意思,但是对于expect的语法很多人不是很了解,导致在句子中经常犯错误,下面为大家介绍下expect的用法。希望对童鞋们有所帮助。 1. expect可表示“期待”“期望”,通常为及物动词,不要受汉语影响在其后误加介词for。如: 我们不能期望一夜之间就取得成功。 误:We should not expect for success overnight. 正:We should not expect success overnight. 2. expect后接动词时要用不定式,不用动名词。如: I didn’t expect to find you here. 我没料到在这里碰到你。 若语义需要,其后还可接不定式的复合结构。如: He expected her to go with him. 他期望她同他一起去。 3. 不要认为 expect 只表示“期待”“期望”,它还可表示“预计”“预料”等。如: I expect a storm. 我预计会有场暴风雨来。 I expect that I will be back on Sunday. 我预计星期日回来。 有时可用于不好的方面。如: He expects to fail the exam. 他预料无法通过考试。 另外,注意expect a baby这一惯用表达,其意为“怀孕”。如: It’s public knowledge she’s expecting a baby. 大家都知道她已怀孕了。 4. 其后可接 that 从句,若从句谓语为否定,注意否定的转移。如: I don’t expect that he has done such a thing. 我预料他不会干出这种事来。 在口语中有可表示“想”或“揣想”。如: I expect you’re tired. 我想你是累了吧。 其后可接 that 从句,但不接疑问词引导的从句,若遇有疑问词,则要使用“疑问词+do you expe ct…”这样的句式。如: 你想什么时候离开 误:Do you expect when you will leave 误:Do you expect when to leave 正:When do you expect to leave

expect的用法讲解

expect的用法讲解 很多童鞋都知道expect的意思,但是对于expect的语法很多人不是很了解,导致在句子中经常犯错误,下面为大家介绍下expect的用法。希望对童鞋们有所帮助。 1. expect可表示“期待”“期望”,通常为及物动词,不要受汉语影响在其后误加介词for。如: 我们不能期望一夜之间就取得成功。 误:We should not expect for success overnight. 正:We should not expect success overnight. 2. expect后接动词时要用不定式,不用动名词。如: I didn’t expect to find you here. 我没料到在这里碰到你。 若语义需要,其后还可接不定式的复合结构。如: He expected her to go with him. 他期望她同他一起去。 3. 不要认为expect 只表示“期待”“期望”,它还可表示“预计”“预料”等。如: I expect a storm. 我预计会有场暴风雨来。 I expect that I will be back on Sunday. 我预计星期日回来。 有时可用于不好的方面。如: He expects to fail the exam. 他预料无法通过考试。 另外,注意expect a baby这一惯用表达,其意为“怀孕”。如: It’s public knowledge she’s expecting a baby. 大家都知道她已怀孕了。 4. 其后可接that 从句,若从句谓语为否定,注意否定的转移。如: I don’t expect that he has done such a thing. 我预料他不会干出这种事来。 在口语中有可表示“想”或“揣想”。如: I expect you’re tired. 我想你是累了吧。 其后可接that 从句,但不接疑问词引导的从句,若遇有疑问词,则要使用“疑问词+do you expect…”这样的句式。如: 你想什么时候离开? 误:Do you expect when you will leave? 误:Do you expect when to leave? 正:When do you expect to leave? 5. 表示过去未曾实现的想法或打算,通常用过去完成时,但在一定的上下文当中,只要意思清楚,也可只用一般过去时。如:

hope与expect用法辨析

want,wish,hope与expect用法辨析 want,wish,hope与expect这四个动词都可以表示愿望,意思为“想要”、“希望”、“期望” 等,但它们的用法有别。 一、want用于口语,表达迫切的愿望。常用于:1、want+n./pron.想要某物e.g. I want a new pen.2、Want+to do sth.要做某事e.g. I want to buy the bike.3、Want+sb.to do sth.(需)要某人做某事e.g. the teacher wants us to clean the classroom.4、Want+sth.done在要别人把某事作了。e.g. He wants the work done at once.5、Sth+want+doin g/to be done某事需要做。e.g. The windows wants cleaning/to be cleaned.[注意]want之后不能跟从句或“object+n.”结构作宾语。 二、wish表示客观上不太可能实现的希望或表示祝愿。常用于:1、wish+to do sth.希望做某事e.g. I wish to visit America someday.2、wish+sb. to d o sth.希望某人做某事e.g. His parents wishes him to be a scien tist in the future.3、wish+sb.+n,/adj.祝愿某人...... e.g. I wish you success!I wish you happy!4、wish+that clause但愿. .....(从句要用虚拟语气) e.g. I wish(that) I were young again.6、wish+sth.done希望(别人)做了某事e.g. I wish the work finished th is week.[注意]wish后跟宾语从句时要用虚拟语气。 三、hope强调主观上的“希望”。常用于:1、hope+to do sth.希望做某事 e.g. W e hope to visit Yan'an soon.2、hope+that clause希望...... e.g. Our foreign friends hope that they can jion the Ma y Day cele-brations in Beijing.[注意] hope后不能跟复合宾语。 四、expect强调客观上可能实现的“期望”,“期待”等。常用于:1、

虚拟语气的用法讲解

第一部分:语气的定义和种类 1 语气(mood) 语气是动词的一种形式,表示说话人对某一行为或事情的看法和态度。2 语气的种类 ⑴、陈述语气:表示动作或状态是现实的、确定的或符合事实的,用于陈述句、疑问句和某些感叹句。如: ①There are two sides to every question.每个问题都有两个方面。 ②Were you busy all day yesterday?昨天一整天你都很忙吗? ③How good a teacher she is!她是多好的一位老师啊! ⑵、祈使语气:表示说话人对对方的请求或命令。如: ①Never be late again!再也不要迟到了。 ②Don’t forget to turn off the light.别忘了关灯。 ⑶、虚拟语气:表示动作或状态不是客观存在的事实,而是说话人的主观愿望、假设或推测等。如: ①If I were a bird, I could fly in the air.如果我是一只小鸟,我就能在空中飞行。 ②I wish I could pass the examination.我希望我能通过考试。 ③May you succeed!祝您成功! 虚拟语气在语法里算得上是个难点。让我们就从最简单的开始吧。 第二部分:简单句中的虚拟语气 一、情态动词的过去式用于现在时态时,表示说话人的谦虚、客气、有礼貌、或委婉的语气,常用于日常会话中。 如: ⑴.Would you be kind enough to show me the way to the post office?请你告诉我去邮局的路好吗? ⑵.It would be better for you not to stay up too late.你最好别熬夜到很晚。 二、表祝愿。 1、常用“may+动词原形”表示祝愿,但愿,此时may须置于句首(多用于正式文体中)。 ⑴、May good luck be yours!祝你好运! ⑵、May you be happy!祝你快乐! ⑶、May you do even better!祝你取得更大成就! ⑷、May you have a good time. 祝愿你玩的痛快。

九年级英语下册 expect的用法与搭配 (新版)外研版

expect的用法与搭配 1. 表示“期待”“期望”,通常为及物动词,不要受汉语影响在其后误加介词for。如:我们不能期望一夜之间就取得成功。 误:We should not expect for success overnight. 正:We should not expect success overnight. 2. 后接动词时要用不定式,不用动名词。如: I didn’t expect to find you here. 我没料到在这里碰到你。 若语义需要,其后还可接不定式的复合结构。如: He expected her to go with him. 他期望她同他一起去。 3. 不要认为 expect 只表示“期待”“期望”,它还可表示“预计”“预料”等。如: I expect a storm. 我预计会有场暴风雨来。 I expect that I will be back on Sunday. 我预计星期日回来。 有时可用于不好的方面。如: He expects to fail the exam. 他预料无法通过考试。 另外,注意expect a baby这一惯用表达,其意为“怀孕”。如: It’s public knowledge she’s expecting a baby. 大家都知道她已怀孕了。 4. 其后可接 that 从句,若从句谓语为否定,注意否定的转移。如: I don’t expect that he has done such a thing. 我预料他不会干出这种事来。 在口语中有可表示“想”或“揣想”。如: I expect you’re tired. 我想你是累了吧。 其后可接 that 从句,但不接疑问词引导的从句,若遇有疑问词,则要使用“疑问词+do you expect…”这样的句式。如: 你想什么时候离开? 误:Do you expect when you will leave? 误:Do you expect when to leave? 正:When do you expect to leave? 5. 表示过去未曾实现的想法或打算,通常用过去完成时,但在一定的上下文当中,只要意思清楚,也可只用一般过去时。如: I had expected to come early, but I missed the early bus. 我本来想早点来的,但未赶上早班车。 We expected him to arrive yesterday. 我们原以为他昨天就会到的。 有时在其后接不定式的完成式,如上面第一句也可改成:

expect单词解析及用法

expect单词解析及用法 今天给大家带来了expect单词解析及用法,快来一起学习吧,下面就和大家分享,来欣赏一下吧。 expect单词解析及用法 expect单词解析及用法 expect:英[?k?spekt] 美[?k?sp?kt] vt.期望; 预料; 要求; 认为(某事)会发生; vi.期待; 预期; 怀胎; 怀孕; 过去式:expected 现在分词:expecting 过去分词:expected 第三人称单数:expects [例句]What did you expect? 你还指望什么呢? expect用法解析: 1. 表示“期待”“期望”,通常为及物动词,不要受汉语影响在其后误加介词for。如:

我们不能期望一夜之间就取得成功。 正:We should not expect success overnight. 2. 后接动词时要用不定式,不用动名词。如: I didn’t expect to find you here. 我没料到在这里碰到你。 若语义需要,其后还可接不定式的复合结构。如: He expected her to go with him. 他期望她同他一起去。 3. 不要认为expect 只表示“期待”“期望”,它还可表示“预计”“预料”等。如: I expect that I will be back on Sunday. 我预计星期日回来。 有时可用于不好的方面。如: He expects to fail the exam. 他预料无法通过考试。 另外,注意expect a baby这一惯用表达,其意为“怀孕”。如:It’s public knowledge she’s expecting a baby. 大家都知道她 已怀孕了。 4. 其后可接that 从句,若从句谓语为否定,注意否定的转移。如:

动词 expect 之用法

动词expect 的语法与惯用法 1. 表示“期待”“期望”,通常为及物动词,不要受汉语影响在其后误加介词for。如:我们不能期望一夜之间就取得成功。 误:We should not expect for success overnight. 正:We should not expect success overnight. 2. 后接动词时要用不定式,不用动名词。如: I didn’t expect to find you here. 我没料到在这里碰到你。 若语义需要,其后还可接不定式的复合结构。如: He expected her to go with him. 他期望她同他一起去。 3. 不要认为expect 只表示“期待”“期望”,它还可表示“预计”“预料”等。如: I expect a storm. 我预计会有场暴风雨来。 I expect that I will be back on Sunday. 我预计星期日回来。 有时可用于不好的方面。如: He expects to fail the exam. 他预料无法通过考试。 另外,注意expect a baby这一惯用表达,其意为“怀孕”。如: It’s public knowledge she’s expecting a baby. 大家都知道她已怀孕了。 4. 其后可接that 从句,若从句谓语为否定,注意否定的转移。如: I don’t expect that he has done such a thing. 我预料他不会干出这种事来。 在口语中有可表示“想”或“揣想”。如: I expect you’re tired. 我想你是累了吧。 其后可接that 从句,但不接疑问词引导的从句,若遇有疑问词,则要使用“疑问词+ do you expect…”这样的句式。如: 你想什么时候离开?

Expect 学习笔记

Expect学习笔记 ————Tim 一、Expect介绍 Expect是一种TCL扩展性的语言,主要用于完成系统交互方面的功能,比如SSH、FTP等,这些程序都需要手工与它们进行互动,而使用Expect就可以模拟人手工互动的过程,使用一种自动的方式控制。 Expect中,有三个重要的主命令,分别是spawn、expect、exp_send,这三个命令几乎存在于所有Expect脚本中,除了这些之外,还有很多Expect所特有的参数、变量,它们也作用与Expect的方方面面。 二、Expect命令 Expect中命令是最重要的部分,它们完成Expect中最关键的功能,命令使用的特点就是他们本身就可以单独执行,使用上类似于: 命令 [选项] 参数 spawn spawn命令是Expect的初始命令,它用于启动一个进程,之后所有expect操 作都在这个进程中进行,如果没有spawn语句,整个expect就无法再进行下去 了,使用方法就像下面这样: spawn ssh root@192.168.0.1 在spawn命令后面,直接加上要启动的进程等信息 当然,如果真的不要spawn过程也没有关系,虽然这样就没有办法单独执行,但 是这个脚本可以与任何调用它的进程进行交互。 除此之外,spawn还支持其他选项: -open 启动文件进程,具体说明请参照下面的选项部分。 -ignore 忽略某些信号,具体说明请参照下面的选项部分。 expect 使用方法: expect 表达式动作表达式动作……………… expect命令用于等候一个相匹配的输出,一旦匹配就执行后面的动作,这个命令 接受几个特有参数,用的最多的就是-re,表示使用正则表达式的方式匹配,使用 起来就像这样: spawn ssh root@192.168.0.1 expect ―password:‖ {exp_send ―word\r‖} 从上面的例子可以看出,expect是依附与spawn命令的,当执行ssh命令后, expect就匹配命令执行后的关键字:password:,如果匹配到关键字就会执行 后面包含在{}括号中的exp_send动作,匹配以及动作可以放在二行,这样就不

hoe,wish,expect的用法

1.hope 作“希望”解,主要用来表示主观上的愿望并对其实现抱有信心。可接不定式(短语)或that 引导的从句,但不可接“宾语+不定式”,即宾语补足语的结构,也称不定式的复合结构,例如: We are hoping to see the president who will come to China. I hope that you can tell us the truth. We hope you to meet us at the station. (错误) 2.wish 作“但愿、希望”解,表示某种未完成或不能完成的愿望。可接不定式(短语)、双宾语、宾语+不定式的复合结构以及that 从句,例如: I wish you to go to Beijing with me next year. Everyone wish (that) he could pass the English exam. We wish you success/ (to be) happy. I wish (that) I were a millionaire. 注意:表示实现愿望的可能性不大或根本不可能时,从句用虚拟语气。 3.expect 作“期待、期望”解,侧重于相信或认为有实现可能的愿望。可接名词、不定式(短语)、不定式的复合结构,例如: I never expected his coming / help. We expect to hear from Jane. I expect you to give me a hand. He expected that he could get there on time.

讲义-过去完成时用法讲解

过去完成时用法讲解 一、过去完成时的概念与结构特点 概念:过去完成时表示在过去某一时间或动作之前已经发生或完成了的动作,即“过去的过去(past-in-the-past)”。 ----|--------------------|---------------------|------------------> 那时以前那时现在 构成:过去完成时由“助动词had+过去分词”构成,其中had通用于各种人称。 They had already had breakfast before they arrived at the hotel. She had finished writing the composition by10:00this morning. 1)过去完成时态的构成: 肯定式:had+动词的过去分词 否定式:hadn't+动词的过去分词 疑问式:Had…+动词的过去分词 简略回答:Yes,主+have/has had. No,主+had现在完成时的用法 过去完成时的用法: 1、表示在过去某一时间或动作之前已经发生或完成的动作。他表示的时间是"过去的过 去"常与by last year,by the time of yesterday,等连用。 如:She said she had seen the film4times. When Mr Li got to the classroom,all the students had begun reading. By the time they arrived,the bus had left 2、表示从过去某一时间开始一直延续到过去另一时间的动作或状态。常与for(后跟段时间)或since(后跟点时间)等连用.如:

expect语法基础: while、for 循环、if 语句的用法示例

expect语法基础: while、for 循环、if 语句的用法示例 - cbwcwy - 博客园 ==两种for循环的写法 for {set i 0} {$i<=10} {incr i} {#i默认增量是1,即等价incr i 1。注意这个反括号一定要写在这行行末:args: should be "for start test next command" ............ .............} Q:能不能改为i为我指定的几个数就好。比如我指定i为 3 5 6 7 9这几个数?谢谢。 foreach i { 1 3 5 7 9 } { puts "$i" } 注:expect 用的是tcl语法,不是shell语法,或者用switch ==for/while循环写法 [15:33:05-Bob@hzling08:~/test/tcl]-(1109)No.108->$ cat tclfor.test #!/usr/bin/expect -- # https://www.doczj.com/doc/de8507227.html,/thread-2301733-1-1.html # for Bob testing # puts "---1---" for {set i 0} {$i < 10} {incr i} { puts "I inside first loop: $i" } puts "---2---" for {set i 3} {$i < 2} {incr i} { puts "I inside second loop: $i" } puts "---3---" puts "Start"

EXPECT 语法

Expect 语法 接触Expect是迫不得已。系统管理员在工作中经常会遇到这样的问题,需要实现一个自动交互的工具,这个工具可以自动Telnet或者Ftp到指定的服务器上,成功login之后自动执行一些命令来完成所需的工作。 当然,有很多编程语言可以去解决此类问题,比如用C、Perl、或者Expect。 显然,尽管C是无所不能的,但是解决此类问题还是比较困难,除非你熟悉Telnet或者Ftp协议。 曾经见过别人用C实现了一个简单的Telnet客户端协议的程序,可以在这个程序加入自己的代码来捕获服务端的输出,根据这些输出来发送适当的指令来进行远程控制。 使用Perl一样可以实现这样的功能,然而,Expect做的更出色,而且除支持Unix/Linux 平台外,它还支持Windows平台,它就是为系统管理和软件测试方面的自动交互类需求而产生的: Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。 Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义: Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。 Expect语言是基于Tcl的,作为一种脚本语言,Tcl具有简单的语法: cmd arg arg arg 一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 . $foo $符号代表变量的值. 在本例中, 变量名称是foo. [cmd arg] 方括号执行了一个嵌套命令. 例如, 如果你想传递一个命令的结果作为另外一个命令的参数, 那么你使用这个符号 . "some stuff" 双引号把词组标记为命令的一个参数. "$"符号和方括号在双引号内仍被解 释 . {some stuff} 大括号也把词组标记为命令的一个参数. 但是, 其他符号在大括号内不被解

hope,expect,wish,want详细用法和区别(2016年10月9日)

陈才英语教育及辅导中心 【hope/wish/want/expect用法深度解析】【广东省佛山市禅城区英语语法】 辅导老师:陈才辅导学生: 【日期:2016年10月3日】 【want,wish,hope与expect用法辨析】 want,wish,hope与expect这四个动词都可以表示愿望,意思为“想要”、“希望”、“期望” 等,但它们的用法有别。 【一】 want用于口语,表达迫切的愿望。常用于以下结构 【1】want+n./pron.想要某物 I want a new pen. 我想要一支钢笔 I want a drink. 我想喝点什么。 Do you want another cup of coffee? 你想再来一杯咖啡吗? I want an explanation from you, Jeremy. 杰里米,我需要你解释一下 Ian knows exactly what he wants in life. 伊恩很清楚他需要什么样的生活 The brackets want an extra screw. 托架需要再加一个螺丝钉。 Children want plenty of sleep. 儿童需要较多的睡眠。 We wanted money badly to buy the machines we needed. 我们迫切需要钱购买我们需要的机器。 I want large ones, not small ones. 我要大的, 不要小的。 【2】want+to do sth.要做某事 I want to buy the bike. 我想买一辆自行车 People wanted to know who this talented designer was. 人们想知道这位天才设计师是谁。 Do you want to tell me what all this is about?. 你不打算告诉我这一切都是怎么回事吗?

expect用法

expect用法 1. [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。 注意:这一行需要在脚本的第一行。 2. [set timeout 30] 基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒。timeout -1 为永不超时 3. [spawn ssh -l username 192.168.1.1] spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用“which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个https://www.doczj.com/doc/de8507227.html, 或dir.exe 的可执行文件。 它主要的功能是给ssh运行进程加个壳,用来传递交互指令。 4. [expect "password:"] 这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒 5. [send "ispass\r"] 这里就是执行交互动作,与手工输入密码的动作等效。 温馨提示:命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。 6. [interact]

英语中for的用法讲解

英语中for的用法讲解 英语中for的用法讲解 for 1. prep. (1)因为,由于 for this reason (2) 表示时间\距离长度; for three days; He ran for three miles. (3) 为了:What do you come here for (4) 表示等价交换: He sold his house for 30,000 dollars. (5) 开往;前往 We set off for London. (6) 代;替;代表 Red is for danger. (7) 用于for + 名词或代词 + to + 不定式动词的名词短语中 The bell rang for the lesson to begin. 2. conj 因为(表示推测或附加的原因,前后为并列句)It must have rained last night, for the ground is wet. Kuntta ( a prisoner ) knew day broke, for he heard the birds singing. 尽管for 的用法较多,但记住常用的几个就可以了。

for的用法的确很多,可用作介词和连词,介词用法尤为丰富。以下详细列出了用法和句例,供你参考。 for 1 preposition 1 used to say who is intended to get or use something, or where something is intended to be used I've got a present for you. Someone left a message for Vicky. 2 in order to help someone or something I looked after the kids for them. Let me carry that bag for you. 3 used to say what the purpose of an object, action etc is for doing something a knife for cutting bread What did you do that for 4 in order to have, do, get, or obtain something Are you waiting for the bus the qualifications necessary for a career in broadcasting 5 used to say how long an action or situation continues for Bake the cake for 40 minutes.

expect的用法和短语例句

expect的用法和短语例句 expect有预期;期待;盼望等意思,那么你知道expect的用法吗?下面是小编为大家整理的expect的用法和相关短语例句,欢迎大家学习! expect的用法: expect的用法1:expect的基本意思是期待料想,指相信或盼望有人会来或有事会发生,这种预料多有一定的根据,强调的是客观可能性,多用于好的方面,在口语中expect的意思常淡化为认为想,此时主语多为第一人称单数。 expect的用法2:expect多用作及物动词,可接名词、代词、动词不定式或that从句作宾语,也可接以动词不定式充当补足语的复合宾语。 expect的用法3:expect所接的that从句在表示预料期望时可用虚拟式,在作想认为解时可用陈述式, that有时可以省略。 expect的用法4:expect的宾语从句若是否定式,常可用于转移否定结构,即把否定词移至主句。但在对话中则既可采用I dont expect so的形式,也可采取I expect not的形式,后者为非正式的语体。 expect的用法5:expect后有时可用so和not分别代替前面的句子或分句的肯定式或否定式宾语。 expect的用法6:在表示过去未曾实现的期望预料时,须用过去

完成时,而不用一般过去时。 expect的用法7:expect是表示思想状态的动词,一般不用于进行体,但在表示语气婉转时可用于现在进行时。 expect的用法8:expect还可用作怀孕的委婉说法,此时需用进行体。 expect的用法9:expect of和expect from都可表示指望期望,意思相同,可互换使用。 expect的用法10:expect的过去分词expected可用作形容词,在句中作表语或定语。 expect的用法11:expect后接名词或代词时往往含有动作的意味,因此有时状语并不修饰expect,而是修饰隐含的不定式短语。 expect的常用短语: 用作动词(v.) expect from (v.+prep.) expect of (v.+prep.) to be expected expect的用法例句: 1. Dont expect me to come and visit you there. 别指望我会去那儿看你。 2. Will Joe be here at Christmas? I expect so. 圣诞节时乔会来这里吗?我想会的。

英语中for的用法讲解

英语中for得用法讲解 英语中for得用法讲解? for 1、prep、 (1)因为,由于for this reason (2) 表示时间\距离长度;for three days;He ran for three miles、 (3) 为了:What do you come here for? (4) 表示等价交换:He sold his house for 30,000 dollars、 (5) 开往;前往We set off for London、 (6) 代;替;代表Red is for danger、 (7) 用于for + 名词或代词+ to + 不定式动词得名词短语中The bell rang for the lesson to begin、 2、conj 因为(表示推测或附加得原因,前后为并列句)It must have rained last night, for the ground is wet、 Kuntta ( a prisoner ) knew day broke, for he heard the birds singing、尽管for 得用法较多,但记住常用得几个就可以了。for得用法得确很多,可用作介词与连词,介词用法尤为丰富。以下详细列出了用法与句例,供您参考。for 1 preposition 1 used to say who is intended to get or use something, or where something is intended to be used I've got a present for you、

expect 用法

expect 用法 请读下面的句子,注意expect的用法。 1. I expect a snowstorm. 我预计会有一场暴风雪。 2. The old man is expecting his daughter’s visit. 这个老人盼望着他女儿的到访。 3. I expect to get a birthday present from my dad. 我期待着收到一件来自父亲的礼物。 4. Do you expect him to teach you English? 你希望他教你英语吗? 5. I didn’t expect that you would get there so soon. 我没想到你会这么快就到达那里了。 【及时归纳】 expect是及物动词,意为“预料,盼望”,它有以下常见用法: 1. expect + n. / pron. 预计……可能发生;期待某人或某物 2. expect + to do sth. 料想做某事 3. expect sb. to do sth. 期望某人做某事 4. expect + 从句预计/ 料想…… 【趁热打铁】 请根据汉语意思完成英语句子,每空一词。 1. 李明的妈妈没有料到会得到那种答复。 Li Ming’s mother did not __________________. 2. 他叔叔预计3月15日可以种完这些树。 His uncle expected __________________ planting these trees by March 15. 3. 我希望你能更加努力地学习英语。 I expect __________________ even harder at your English. 4. 我预计我爸爸会给我买一本英汉词典。 I expect __________________ will buy me an English-Chinese dictionary.

expect用法

Expect用作及物动词,其意义为“期待、盼望、指望、希望、要求、预料、料想、以为”等。其用法如下: 1、后接名词或代词: He is expecting a letter(telegram)。他正在等一封信(电报)。 My sister is expecting a baby next June。我姐姐六月间要生孩子了。 I expect him every moment。我时时刻刻盼望他。 We haven’t expected it。我们没有料想到。 That’s what we expected。这正是我们所预料到的。 2、后接不定式: I expect to be back on Sunday。我预期星期天回来。 How can you expect to make progress if you don’t work hard?你不下苦功,怎么能有进呢? 3、后接带不定式和副词的复合结构: We expect every man to do his duty。我们要求人人尽责。 They expect steel production to reach 20 million tons。它们预计钢产量将达到二千万吨。 We can’t expect one to change the habits of a lifetime in a short time。我们不能期待一个人一辈子养成的习惯短时期就能改变。 Mother will expect us in tonight。妈妈会指望我们今晚呆在家里。 I didn’t expect you back so soon。我没有想到你会回来这么快。 4、后接从句: I expect(that)he went to town yesterday。我以为他昨天进城去了。 I expect you can guess what I mean,can’t you?我想你可以猜出我的意思,对吧? 5、用于比较状语从句中: You arrived earlier than I had expected。你们到得比我预料的早。 The work is making as much progress as can be expected。正如所预料的那样,者县工作进展很顺利。 6、起答语的说法: “Will he be back tonight?”“I expect so(I expect not。=I don’t expect so)”“他今晚会回来吗?”“我想会回来(不会回来了)。”

expect命令基本用法

一、概述 我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能。而Expect 就使用来实现这种功能的工具。 Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect 的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。 :) Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。Expect需要Tcl编程语言的支持,要在系统上运行Expect必须首先安装Tcl。 二、Expect工作原理 从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP 网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。 Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。例如下面的Chat脚本实现等待标准输出出现Login:字符串,然后发送somebody 作为用户名;然后等待Password:提示符,并发出响应sillyme。 引用:Login: somebody Password: sillyme 这个脚本用来实现一个登录过程,并用特定的用户名和密码实现登录。 Expect最简单的脚本操作模式本质上和Chat脚本工作模式是一样的。 例子: 1、实现功能 下面我们分析一个响应chsh命令的脚本。我们首先回顾一下这个交互命令的格式。假设我们要为用户chavez改变登录脚本,要求实现的命令交互过程如下: 引用:# chsh chavez Changing the login shell for chavez Enter the new value, or press return for the default

相关主题
文本预览
相关文档 最新文档