我想捕获远程设备的提示。
-regexp {[\$\#]\s*$} {
# capture the prompt
}
“[\ $#] \ s * $”对于带有颜色代码的提示不起作用。
答案 0 :(得分:0)
颜色代码在字符流中作为转义序列发送。因此,如果你有它们,你需要匹配它们。每个转义序列都是ESC字符( Esc ,^[
,\u001b
),后跟各种以;
结尾的字符(好吧,那就是颜色设置;还有其他人,他们有点复杂)。虽然是,但您可以将它们与更复杂的正则表达式相匹配,将提示设置为您控制的简单内容会非常容易。
# ...
expect "ssword: "
send $password\r
# Note, *NO* expect at this point as matching it is hard
send "PS1='> '\r"
expect -regexp {> $}
彩色提示对于人们来说已经足够了,但是他们对于编写脚本很尴尬。压倒一切会让你的生活更轻松。 (您也可以尝试将终端设置为不支持颜色的终端类型。)