Re: How to control the loop within expect.
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.tcl archive

Re: How to control the loop within expect.

From: Bruce Hartweg <bruce-news@hartweg.us>
Date: Fri Apr 28 2006 - 15:10:18 CEST

hujunfeng@gmail.com 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
Received on Sun Apr 30 03:30:33 2006