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"