对多个无序Linux程序提示的反应(使用expect、tcl或其他)

问题描述 投票:0回答:1

我有一个想要导航的程序,这对于我的预期技能来说有点太烦人了。举个例子,假设它有 3 个提示,需要 3 个答案: 姓名: 问题一: 问题B:

现在,如果 N、1 和 B 每次都按这个顺序出现,我就准备好了。对我来说不幸的是,这个特定的程序可以选择以任何顺序提示,具体取决于输入或学生客厅的风向……谁知道呢……我们还将在一个程序中多次运行它。排。我将把“可以问问题 1 或问题一,并想要相同的答案”留到另一天......

有没有一种方法可以轻松地同时监控任意提示?某种扩展的 if/then 或 switch 语句?我怀疑我将使用 $expect_out 和 exp_continue...我还希望能够设置任意响应...例如,我可能会在第二个时间用“Bob”然后“Joe”来响应 Name运行。

谢谢!

我仍处于研究阶段,稍后将测试代码,但我希望找到比我的搜索结果更好的指针,以防这并不像我想象的那么困难......

bash shell tcl expect
1个回答
0
投票

正如 Shawn 指出的,Expect 并行等待多个提示没有问题。你需要这样的东西:

set name_answer {Joe Bloggs}
set q1_answer {Stuff}
set qb_answer {Other stuff}

expect {
    NamePrompt {send "$name_answer\r"; exp_continue}
    Q1Prompt   {send "q1_answer\r"; exp_continue}
    QBPrompt   {send "qb_answer\r"; exp_continue}
    NextPrompt
}

这里

NextPrompt
表示这一系列问题的结束,所以我们跳出循环。

有关更多详细信息,请查看文档 https://www.tcl.tk/man/expect5.31/expect.1.html

© www.soinside.com 2019 - 2024. All rights reserved.