我正在编写一个expect
脚本来处理过多的提示。
bash
我正在使用的脚本可以遵循以下两个序列之一:
prompt1 -> prompt2 -> prompt3
prompt1 -> prompt3
也就是说,有时我不明白prompt2
。因此,我的问题是:我如何编写一个expect
检查 的脚本prompt2
,如果它在那里发送 ay
并继续进行,否则它只是继续。
编辑:感谢@glenn 的输入和答案!我将尝试使问题更清楚,以防将来对其他人有所帮助。bash
我正在处理的特定脚本是从服务器下载一些数据。所以通常,当我执行脚本时会发生什么:
Do you want to download data from *server name*?
y
Do you want to download data from *some directory within server*?
y
...
但是,有时我在执行此脚本时没有连接到服务器。因此,我在脚本中包含了一部分,用于检查我是否已连接到服务器。如果我没有,它会给我另一个提示,如下所示:
Do you want to download data from *server name*?
y
Looks like you are not connected to *server name*! Want to connect now?
y
Do you want to download data from *some directory within server*?
y
...
我怀疑这就是您想要的:
expect
等待“prompt2”或“prompt3”的命令exp_continue
基本上是一个循环:留在这个期望命令中并继续寻找列出的模式。“prompt3”没有对应的动作,所以expect命令结束。