我正在编写一个期望脚本来自动化一些测试。为了检测何时发生一般错误(可能发生在测试的任何阶段),而不是在每个命令上重复相同的模式(例如,“重新启动系统”)expect,我决定使用expect_background这种情况。
我对该expect_background命令的理解是,它会在当前活动之前针对所有输入文本进行检查expect。所以,如果两者expect_background都expect在等待相同的模式,我希望(请用双关语;-))这两个动作都会被触发。例如:
#!/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"应该打印在5and 15,expect-9at9和"expect-20"at 20。但这是我得到的:
$ ./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
为什么会这样?以及如何获得所描述的行为?