gpt4 book ai didi

regex - 如何正确预期多个提示

转载 作者:行者123 更新时间:2023-12-01 12:45:40 26 4
gpt4 key购买 nike

我有一个期望脚本,我目前正在其中寻找多种提示类型并发送命令作为响应。我知道使用“-re”进行正则表达式匹配,但我想知道实现这一目标的正确方法。

例如,我有这些提示类型:

[user@hostname ~]#
user@hostname --->
/ >
-bash-3.00$
cli>

这是检测上述所有内容的正确/足够表达吗?
set multiPrompt "(%|#|cli\>|\$|\-\-\-\>)"
expect -re $multiPrompt
send "$someCommand\r"

另外,我有一个命令列表,其中一些命令在远程系统上执行后会导致提示更改。由于提示的更改,其余命令未发送,因为我的期望脚本无法检测更改并执行发送操作。

我想要做的是创建一个可能的提示池,以便我的期望脚本发送命令而不会遗漏任何命令。我的方法正确吗?

最佳答案

虽然使用正则表达式来检测提示是正确的,但当您有如此广泛的可能性时,选择一个好的正则表达式是很棘手的。例如,我打赌这个 RE 会起作用:

set multiPrompt {[#>$] }

(它只是检测提示的结尾,并忽略它之前的所有内容。提示末尾几乎总是有一个空格,用于在视觉上将用户键入的内容与提示分开。)

然而,问题是这个 RE 很可能匹配其他东西。您最好将提示更改为已知且唯一的值(通常通过在远程设备上设置 PS1 环境变量),以便获得可靠的检测。请注意,这仅适用于您不向用户公开提示的情况,这适用于某些 expect 用途,而不适用于其他用途……

关于regex - 如何正确预期多个提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16229643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com