Regarding expect_out(buffer) in Expect

12,386

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.

Share:
12,386
user2720323
Author by

user2720323

Updated on June 14, 2022

Comments

  • user2720323
    user2720323 almost 2 years

    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?