2016-11-29 198 views
2

我有點用正則表達式處理expect腳本不解。我生成的可執行文件將發送幾條帶有文本的消息,如Press [Enter] to continue:。我認爲處理應該如下:的特殊含義輸入:預計-re「按回車]繼續:」不工作

spawn /tmp/install.run --prefix /opt --mode text 

expect { 
    timeout { send_user "\nFailure to initiate license view\n"; exit 1 } 
    eof { send_user "\nGeneral error\n"; exit 1 } 
    -re "Press \[Enter\] to continue:" { send "\r" } 
} 

但是,腳本拒絕識別返回的文本。它只適用於使用這個正則表達式:"Press .Enter\] to continue:"

有什麼特別之處Enter關鍵字在期待腳本?

回答

3

既然你已經使用""引號代替{}牙套,TCL正在處理反斜槓字符串獲取到正則表達式引擎之前,產生一個不帶反斜線的字符串。這意味着\[Enter\]被視爲字符類[Enter]

爲正則表達式使用大括號:

-re {Press \[Enter\] to continue:} { send "\r" }