2011-06-27 33 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 

这一个匹配$
第二个美元符号确保仅在输入结束时匹配模式。