2

Can anyone explain the difference between

expect_out(buffer)

expect_out(0,string)

Generally I prefer to use expect_out(buffer) .

What is the second one and when can we use that?

Can any one explain please?

Jerry
  • 70,495
  • 13
  • 100
  • 144
user2720323
  • 277
  • 3
  • 6
  • 11

1 Answers1

8

You might want to take a look at the manpage:

I will quote the relevant parts:

Upon matching a pattern (or eof or full_buffer), any matching and previously unmatched output is saved in the variable expect_out(buffer). Up to 9 regexp substring matches are saved in the variables expect_out(1,string) through expect_out(9,string). If the -indices flag is used before a pattern, the starting and ending indices (in a form suitable for lrange) of the 10 strings are stored in the variables expect_out(X,start) and expect_out(X,end) where X is a digit, corresponds to the substring position in the buffer. 0 refers to strings which matched the entire pattern and is generated for glob patterns as well as regexp patterns. For example, if a process has produced output of "abcdefgh\n", the result of:

expect "cd"

is as if the following statements had executed:

set expect_out(0,string) cd
set expect_out(buffer) abcd

and "efgh\n" is left in the output buffer. If a process produced the output "abbbcabkkkka\n", the result of:

expect -indices -re "b(b*).*(k+)"

is as if the following statements had executed:

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

You can see how expect_out(0,string) and expect_out(buffer) contain different strings.

Jerry
  • 70,495
  • 13
  • 100
  • 144