任何人都可以解释
之间的区别expect_out(buffer)
expect_out(0,string)
通常我更喜欢使用expect_out(buffer)
。
第二个是什么,我们什么时候可以使用它?
请问任何人解释一下吗?
答案 0 :(得分:7)
您可能需要查看manpage:
我将引用相关部分:
匹配模式(或eof或full_buffer)后,任何匹配且先前不匹配的输出将保存在变量
expect_out(buffer)
中。最多9个regexp子串匹配保存在变量expect_out(1,string)
到expect_out(9,string)
中。如果在模式之前使用-indices
标志,则10个字符串的起始和结束索引(以适合lrange
的形式)存储在变量expect_out(X,start)
和{{1}中其中X是一个数字,对应于缓冲区中的子字符串位置。 0表示与整个模式匹配的字符串,为glob模式和regexp模式生成。例如,如果某个流程已生成expect_out(X,end)
的输出,则结果为:expect "cd"
就好像执行了以下语句:
set expect_out(0,string) cd set expect_out(buffer) abcd
和
"abcdefgh\n"
保留在输出缓冲区中。如果进程生成了输出"efgh\n"
,则结果为:expect -indices -re "b(b*).*(k+)"
就好像执行了以下语句:
set expect_out(0,start) 1 set expect_out(0,end) 10 set expect_out(0,string) bbbcabkkkk set expect_out(1,start) 2 set expect_out(1,end) 3 set expect_out(1,string) bb set expect_out(2,start) 10 set expect_out(2,end) 10 set expect_out(2,string) k set expect_out(buffer) abbbcabkkkk
您可以看到"abbbcabkkkka\n"
和expect_out(0,string)
包含不同字符串的方式。