期待多个结果并返回相同的字符串

时间:2014-05-30 14:21:14

标签: tcl expect

在tcl中,我怎么能期望两个结果并发回相同的字符串?例如,

expect A or B {send C}

2 个答案:

答案 0 :(得分:0)

您的示例对于更有用的答案来说有点过于简单,但可能这是最好的方法:

expect -re {(A)|(B)} {send C}

这取决于" A"和" B" 真的是。

答案 1 :(得分:0)

对于您提及的特定案例,只需重复正文:

expect {
    A {send C}
    B {send C}
}

你也可以写一个正则表达式(对于单个字符你在这里寻找一个glob模式)。但是,如果ABsend C真的代表更复杂的东西,我们还有其他选择。例如,我们可以将“真实”主体存储在变量中并使用它。

set WhatToDoWhenFoundSomething {
    send C
}
expect {
   A {eval $WhatToDoWhenFoundSomething}
   B {eval $WhatToDoWhenFoundSomething}
}

这实际上是eval用例。有一些重复的代码,但并不多,而且检查正确性也很容易。 (是的,它就像那个变量的内容就是那些主体。)