Spawn Id Lists
It is possible to associate a single action with the multiple spawn ids simultaneously. This is accomplished by using a list of spawn ids as an argument to the −i flag. The previous expect command could be written as:
expect {
-i "$host1 $host2 $host3" $prompt {
work $expect_out(spawn_id)
}
}
This syntax is just a generalization of the earlier syntax. For example, additional patterns can be added, in which case they also refer to the three processes. The following adds on a test that catches eof from any of the processes.
expect {
-i "$host1 $host2 $host3" $prompt {
work $expect_out(spawn_id)
}
eof exit
}More −i flags can be used as before. For example, if you wanted to look for the prompt from the three processes, and also the possibility of a special pattern from just host1, you could write that as:
expect {
-i "$host1 $host2 $host3" $prompt {
work $expect_out(spawn_id)
}
eof exit
-i $host1 another-pattern {host1-action}
}
If you want, you can put all −i arguments in double quotes when using a single spawn id. The quotes are only absolutely necessary when using lists. Do not use braces since they force the $ to be interpreted literally.
expect −i "$host1 $host" pattern ;# OK
expect −i "$host1" pattern ;# OK
expect −i $host1 pattern ;# OK
expect −i {$host1} pattern ;# WRONG!Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access