在我的脚本中,我想返回不匹配的字符串。
我试过了puts $expect_out(buffer)
,但它没有用,并且给了我以下错误
can't read "expect_out(buffer)": no such variable
while executing
"puts "out is $expect_out(buffer)" "
expect {
-nocase -re "$arg3" { exit 0 }
timeout { puts "Does not matched, output is $expect_out(buffer)" ; exit 2 }"
}
答案 0 :(得分:0)
expect_out
数组在匹配发生之前不存在,因此如果您之前未在代码中匹配expect调用并且实际达到了timeout子句,则会收到no such variable
错误。
期待联机帮助
“在匹配模式(或eof或full_buffer)时,任何匹配和先前不匹配的输出都保存在变量expect_out(buffer)中。最多9个regexp子串匹配保存在变量expect_out(1,string)到expect_out (9,字符串)。如果在模式之前使用-indices标志,则10个字符串的起始和结束索引(以适合lrange的形式)存储在变量expect_out(X,start)和expect_out(X,结束)其中X是一个数字,对应于缓冲区中的子字符串位置.0指的是与整个模式匹配的字符串,为glob模式和regexp模式生成。“
您可以通过info exists expect_out
对此进行测试,并使用array names expect_out
打印出数组键/值(如果存在)。
你可以通过set expect_out(key) value
自己设置显示值,但是我无法(我知道)最初检索不匹配的字符串,使用log_file expectoutput.txt
进行操作并在以后读取它超时。