Re: How to control the loop within expect.



hujunfeng@xxxxxxxxx wrote:
I just met a problem when I have a loop and an expect in this loop.
for example
for {set i 1} {i<10} {incr i} {
send a commanda
expect {
1 {puts 1}
2 {puts 2}
3 {........}
}
send a commandb
}
when I get the value 1, I will puts 1 and execute the commandb, so as
2.but my question is if I get the value 3, I want to continue the loop
but not execute send the commandb.
I've used break or exit , these all seemed exit the loop.
Do anybody knows this?
Thanks.

2 things,
As others have mentioned you can use expect itself as the looping
construct (i.e. if you want to keep doing the same interactions until some
condition of the interaction makes you want to stop. in this case you
just add exp_continue to each branch that doesn't want you to stop.

If the above example is actually what you are wanting (i.e. the loop condition
is *external* to your interaction, and you have other code in your loop
in addition to the expect, you can use the normal tcl continue to stop
the current loop body and continue to the next one

for {set i 1} {i<10} {incr i} {
send a commanda
expect {
1 {puts 1}
2 {puts 2}
3 {
........
continue
}
}
send a commandb
}



Bruce
.



Relevant Pages

  • Re: How to control the loop within expect.
    ... when I get the value 1, I will puts 1 and execute the commandb, so as ... but not execute send the commandb. ... these all seemed exit the loop. ...
    (comp.lang.tcl)
  • How to control the loop within expect.
    ... I just met a problem when I have a loop and an expect in this loop. ... when I get the value 1, I will puts 1 and execute the commandb, so as ... but not execute send the commandb. ... I've used break or exit, these all seemed exit the loop. ...
    (comp.lang.tcl)
  • Re: How do you continue in a for loop?
    ... Michele Dondi wrote: ... When I see a loop like that I assume that the loop will execute ... exactly 10 times just as specified in the loop condition. ...
    (comp.lang.perl.misc)