Matching Any Spawn Id Already Listed

Frequently, different spawn ids may be watched for different patterns as well as a common pattern. For example, suppose you are waiting for pattern X from hostA or hostB, and pattern Y from hostC, or pattern Z from any of the three hosts. You might write:

expect {
    −i "$hostA $hostB" X
    −i "$hostC" Y
    −i "$hostA $hostB $hostC" Z
}

The global variable any_spawn_id contains a predefined value that matches any spawn id named in the current expect command. It can be used to simplify the previous command to:

expect {
    −i "$hostA $hostB" X
    −i "$hostC" Y
    −i "$any_spawn_id" Z
}

any_spawn_id can be used in a list as well. Suppose, you also want to watch one other process (hostD) but only for the common pattern Z. It could be done this way:

expect {
    −i "$hostA $hostB" X
    −i "$hostC" Y
    −i "$any_spawn_id $hostD" Z
}

Get Exploring Expect now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.