"expect"匹配"send"字符串,为什么?



我发现发送命令之后,期望命令与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,测试将开始失败。

相关内容

  • 没有找到相关文章

最新更新