1. 流程
-
运行一个Expect程序
-
spawn寄生目标程序,接管目标程序的输入输出
-
expect判断目标程序的输出,做相应逻辑判断
-
send用来向目标程序输入
-
interact将控制权交给用户
2. spawn
寄生目标程序,接管目标程序的输入输出,这通常都是expect脚本的第一步,默认情况下,spawn会回显命令名称和参数,可以用-noecho参数来让它不回显
3. send
Characters are sent immediately although programs with line-buffered input will not read the characters until a return character is sent. A return character is denoted "\r".
向目标程序输入,字符直接发送给程序,但要注意,行缓冲输入的程序直到收到一个return字符才会接收这些输入字符,return字符用"\r"表示
-
send_user 输入到 stdout,一般做提示用
4. expect
匹配被寄生的程序的输出与模式,如果匹配上,执行相应动作。匹配成功或超时或遇到文件尾时都会返回
一旦匹配上,则开始执行对应的语句。默认情况下,模式采用Tcl语言的string match命令匹配
模式中可用的特殊符号: