2
我發現預計命令剛剛在發送命令匹配數據從發送命令。「期望」匹配「發送」字符串,爲什麼?
讓我們看到,my.sh:
#!/bin/sh
read line
echo ok
my.exp(一些代碼是多餘的,我模仿的DejaGnu測試框架...):
set passn 0
proc pass {msg} { global passn; incr passn; send_user "PASS: $msg\n" }
set failn 0
proc fail {msg} { global failn; incr failn; send_user "FAIL: $msg\n" }
proc check {} {
global passn failn;
send_user "TOTOAL: [expr $passn + $failn], PASSED: $passn, FAIL: $failn\n"
if {$failn == 0} { exit 0 } { exit 1 }
}
set timeout 1
spawn ./my.sh
send hello\n
expect {
-ex hello {
send_user "~$expect_out(0,string)~\n"
pass hello
}
default { fail hello }
}
expect {
-ex ok { pass ok }
default { fail ok }
}
check
運行時expect my.exp我得到:
spawn ./my.sh hello ~hello~ PASS: hello ok PASS: ok TOTOAL: 2, PASSED: 2, FAIL: 0
我不明白爲什麼你好匹配!!請告訴我。我已經重讀:
感謝您的回答。我不希望有關** Expect **的問題可以在SO中得到解答!一個人認爲我不明白爲什麼我的代碼失敗,用** stty -echo **,當我嘗試調試問題時,但是用** stty_init -echo ** work ...只需一分鐘我將閱讀**男人期望** ... – gavenkoa
還設置了stty_init {-echo raw} **我修復了** \ r **的問題。我使用** Expect **來測試我的面向行的協議,它很煩人而不是** \ n **在匹配模式中使用** \ r \ n ** ... – gavenkoa