我正在编写一个期望脚本来自动化一些测试。为了检测何时发生一般错误(可能发生在测试的任何阶段),而不是在每个命令上重复相同的模式(例如,“重新启动系统”)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"
应该打印在5
and 15
,expect-9
at9
和"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
为什么会这样?以及如何获得所描述的行为?