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"