期望语句提示

时间:2018-09-23 12:53:28

标签: regex tcl expect

我正在尝试匹配提示,但是括号(%|#)中的OR语句不起作用。

以下内容仅适用于%结束提示,而不适用于#结束提示:

set FULLPROMPT "${HOST} (.+)(%|#) $"

以下对于任何提示都不起作用:/:

set FULLPROMPT "${HOST} (.+)% $"

我显然缺少一些东西。

提示可能是这样

12:33 user@hostname ~%
12:33 root@hostname /usr/local/folder#

期望的运行方式

set HOST "hostname"
set FULLPROMPT "${HOST} (.+)(%|#) $"
send "\n"
expect -re $FULLPROMPT

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

感谢Schelte Bron,我现在可以确切地看到正则表达式如何与提示匹配。 事实证明,提示带有颜色,并且在%#之前和之后都放置了各种字符。

要克服这一点,您可以

  1. 覆盖提示PS1变量
  2. 照顾正则表达式中提示的所有隐藏字符
  3. 登录时捕获提示并在正则表达式中使用它(似乎像我们应该做的,但这似乎需要很多工作)

在调试模式下运行期望:

expect -d