Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regarding expect_out(buffer) in Expect

Tags:

expect

tcl

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?

like image 951
user2720323 Avatar asked Jun 15 '26 11:06

user2720323


1 Answers

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.

like image 185
Jerry Avatar answered Jun 18 '26 01:06

Jerry



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!