2

谁能解释两者之间的区别

expect_out(buffer)

expect_out(0,string)

一般来说,我更喜欢使用expect_out(buffer).

第二个是什么,我们什么时候可以使用它?

任何人都可以解释一下吗?

4

1 回答 1

8

您可能想看一下手册页

我将引用相关部分:

在匹配模式(或 eof 或 full_buffer)时,任何匹配的和以前不匹配的输出都保存在变量中expect_out(buffer)。最多 9 个正则表达式子字符串匹配通过 保存在变量expect_out(1,string)expect_out(9,string)。如果在-indices模式之前使用标志,则 10 个字符串的开始和结束索引(以适合的形式lrange)存储在变量中expect_out(X,start)expect_out(X,end)其中 X 是数字,对应于缓冲区中的子字符串位置。0 是指匹配整个模式的字符串,并为 glob 模式和正则表达式模式生成。例如,如果一个进程产生了 的输出"abcdefgh\n",则结果为:

期待“CD”

就好像执行了以下语句:

设置 expect_out(0,string) cd
设置 expect_out(buffer) abcd

"efgh\n"留在输出缓冲区中。如果一个进程产生了 output "abbbcabkkkka\n",结果是:

期望 -indices -re "b(b*).*(k+)"

就好像执行了以下语句:

设置 expect_out(0,start) 1
设置 expect_out(0,end) 10
设置 expect_out(0,string) bbbcabkkkk
设置 expect_out(1,start) 2
设置 expect_out(1,end) 3
设置 expect_out(1,string) bb
设置 expect_out(2,start) 10
设置 expect_out(2,end) 10
设置 expect_out(2,string) k
设置 expect_out(buffer) abbbcabkkkk

您可以看到如何包含不同expect_out(0,string)expect_out(buffer)字符串。

于 2013-09-21T11:11:58.857 回答