expect语句提示

Expect statement prompt

我正在尝试匹配提示,但括号 (%|#) 内的 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

如有任何帮助,我们将不胜感激

感谢 Schelte Bron,我现在可以准确地看到正则表达式如何匹配提示。 事实证明,提示有颜色,这会在 %#.

前后放置各种字符

要克服这个问题,您可以

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

运行 预计处于调试模式:

expect -d