2011-06-27 37 views
8


我想寫一個腳本,通過TCL /期望從一個系統爬到另一個系統。它爲我工作。我需要一個正則表達式中期望「$」期望「#」的結合,使之與路徑中的任何提示任何系統都可以被包括在內。TCL期待正則表達式

#!/usr/bin/expect 
# Using ssh from expect 

log_user 0 
spawn ssh [email protected] 
expect "sword: " 
send "test\r" 
expect "$ " 
send "ssh beta\r" 
expect "# " 
send "uptime\r" 
expect "# " 

set igot $expect_out(buffer) 
puts $igot 

回答

13

使用此:

expect -re {[$#] }
+3

其中的關鍵是:添加'-re'標誌,以便我們可以匹配一個RE,並將RE放在'{大括號}'中,這樣它就不會被替換。 –

8

一個更通用的解決方案:

set prompt "(%|#|\\\$) $" 
expect -re $prompt 

這一個匹配$
第二個美元符號確保僅在輸入結束時匹配模式。