expect 可以代替人手进行一些交互输入挺好用,但是遇到特殊键盘按钮输入,例如esc,tab之类就不知如何入手了。其实这些特殊字符,也有一个办法输入,就是通过ASCII编码转换。


例如

escape(esc)       对应的ASCII码 033      

TAB                   对应的ASCII码 011        

backspace(回删键盘) 对应的ASCII码 010

DEL键盘    对应的ASCII码 177  


详细的Ascii编码,请点击下面的链接

http://blog.csdn.net/shendl/article/details/1790964


那么在expect当中怎么怎么做呢?

只要 send "\ASCII码" 即可


譬如:

要发送esc键,就输入 send "\033"



自虐的例子,通过expect使用vi,在文件/tmp/expect_To_vi.txt输入Hello world (vi需要使用Esc切换模式)。



#!/usr/bin/expect

spawn /bin/vi /tmp/expect_To_vi.txt

expect "expect_To_vi.txt"

#输入i,进入编辑模式

send "i"

expect "INSERT"


#输入内容

send "Hello world"


#输入esc,进入命令行模式

send "\033"

expect ""


#输入:,进入末行模式

send ":"

expect ":"

#输入wq,退出

send "wq\n"

expect "written"