从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。spawn命令来启动脚本和命令,Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。
set timeout设置脚本等Shell返回与expect指定的模式匹配的字符串的时间,如果匹配成功则立即继续执行,如果匹配不到就会阻塞,在超出timeout指定的时间后才继续执行。
timeout默认是10s,如果设置为-1,脚本就要永远等下去。
一个简单的例子,用于自动输入kerberos密码:
#!/usr/bin/expect #source /home/rank/.bash_profile set timeout 10 spawn /usr/bin/kinit can.yu expect "*OPI.COM*" send "111111\r" expect eof