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,我现在可以准确地看到正则表达式如何匹配提示。
事实证明,提示有颜色,这会在 %
或 #
.
前后放置各种字符
要克服这个问题,您可以
- 覆盖提示 PS1 变量
- 注意正则表达式中提示的所有隐藏字符
- 在登录时捕获提示并在正则表达式中使用它(似乎是我们应该做的,但这似乎需要很多工作)
运行 预计处于调试模式:
expect -d
我正在尝试匹配提示,但括号 (%|#)
内的 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,我现在可以准确地看到正则表达式如何匹配提示。
事实证明,提示有颜色,这会在 %
或 #
.
要克服这个问题,您可以
- 覆盖提示 PS1 变量
- 注意正则表达式中提示的所有隐藏字符
- 在登录时捕获提示并在正则表达式中使用它(似乎是我们应该做的,但这似乎需要很多工作)
运行 预计处于调试模式:
expect -d