我发现在发送命令之后,期望命令与send的命令匹配数据。
让我们看看,my.sh:
#!/bin/sh
read line
echo ok
my.exp(有些代码是多余的,我模仿DejaGNU测试框架…):
set passn 0
proc pass {msg} { global passn; incr passn; send_user "PASS: $msgn" }
set failn 0
proc fail {msg} { global failn; incr failn; send_user "FAIL: $msgn" }
proc check {} {
global passn failn;
send_user "TOTOAL: [expr $passn + $failn], PASSED: $passn, FAIL: $failnn"
if {$failn == 0} { exit 0 } { exit 1 }
}
set timeout 1
spawn ./my.sh
send hellon
expect {
-ex hello {
send_user "~$expect_out(0,string)~n"
pass hello
}
default { fail hello }
}
expect {
-ex ok { pass ok }
default { fail ok }
}
check
当运行时,期望我的.exp我得到:
产卵/my.sh你好~你好~PASS:你好好啊通过:可以总目标:2,通过:2,失败:0
我不明白为什么你好匹配!!请告诉我。我已经重读了:
- http://expect.sourceforge.net/FAQ.html
expect
与伪终端设备。它们是很像普通终端:除非禁用echo(使用expectstty
命令),您发送的任何内容也可以作为您的"终端"显示输出"(这是预期的输入)。
预期使用stty_init
变量来设置新创建的伪终端。如果将set stty_init -echo
添加到my.exp
,测试将开始失败。