在tcl中,我怎么能期望两个结果并发回相同的字符串?例如,
expect A or B {send C}
答案 0 :(得分:0)
您的示例对于更有用的答案来说有点过于简单,但可能这是最好的方法:
expect -re {(A)|(B)} {send C}
这取决于" A"和" B" 真的是。
答案 1 :(得分:0)
对于您提及的特定案例,只需重复正文:
expect {
A {send C}
B {send C}
}
你也可以写一个正则表达式(对于单个字符你在这里寻找一个glob模式)。但是,如果A
,B
和send C
真的代表更复杂的东西,我们还有其他选择。例如,我们可以将“真实”主体存储在变量中并使用它。
set WhatToDoWhenFoundSomething {
send C
}
expect {
A {eval $WhatToDoWhenFoundSomething}
B {eval $WhatToDoWhenFoundSomething}
}
这实际上是eval
的好用例。有一些重复的代码,但并不多,而且检查正确性也很容易。 (是的,它就像那个变量的内容就是那些主体。)