首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >影响其他expect行为的expect_background

影响其他expect行为的expect_background
EN

Stack Overflow用户
提问于 2013-10-21 19:41:30
回答 1查看 847关注 0票数 2

我正在编写一个expect脚本来自动化一些测试。为了检测何时发生一般错误(在测试的任何阶段都可能发生),我决定对这种情况使用expect_background,而不是在每个expect命令上重复相同的模式(例如,“重新启动系统”)。

我对expect_background命令的理解是,它是根据当前活动expect之前的所有输入文本进行检查的。因此,如果expect_backgroundexpect都在等待相同的模式,我希望(请使用双关语;-)这两个操作都会被触发。例如:

代码语言:javascript
复制
#!/usr/bin/expect -f

spawn ./counter.sh

expect_background {
  "5" { puts "expect-bg"; }
}

expect {
  "9" { puts "expect-9"; }
}

expect {
  "20" { puts "expect-20"; }
}

./counter.sh脚本以1秒为间隔从1计数到20。根据我上面描述的行为,"expect-bg"应该在515上打印,expect-99上打印,"expect-20"20上打印。但这是我得到的:

代码语言:javascript
复制
$ ./expect_bg.expect  
spawn ./counter.sh
1
2
3
4
5
expect-bg
6
7
8
9
10
11
12
13
14
15
expect-bg
16
17
18
19
20

为什么会发生这种情况?如何描述这些行为呢?

EN

回答 1

Stack Overflow用户

发布于 2013-10-22 00:38:59

我可以用expect_beforeexp_continue生成您想要的输出

代码语言:javascript
复制
#!/usr/bin/expect -f
spawn sh counter.sh
expect_before {
    5 {puts "expect_before"; exp_continue}
}
expect {
    9 {puts "exp_9"}
}
expect {
    20 {puts "exp_20"}
}
代码语言:javascript
复制
$ expect counter.exp 
spawn sh counter.sh
1
2
3
4
5
expect_before
6
7
8
9
exp_9
10
11
12
13
14
15
expect_before
16
17
18
19
20
exp_20

当你有了

代码语言:javascript
复制
expect_before {
    5 {puts "expect_before"; exp_continue}
}
expect {
    9 {puts "exp_9"}
}

您有效地拥有了以下内容:

代码语言:javascript
复制
expect {
    5 {puts "expect_before"; exp_continue}
    9 {puts "exp_9"}
}

如果省略了exp_continue,expect语句将以前5结束,因此您永远不会有机会查找9。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19493572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档