Combining Spawn Ids In A Single -input Or -output
It is possible to combine multiple spawn ids in a single -input
or -output
. This uses the same syntax as the expect
command uses to combine multiple spawn ids in a −i
flag. Both of the following interact
commands have the same result.
interact -input $i -output $o1 -output $o2 interact -input $i -output "$o1 $o2"
The second form is preferred unless the two output spawn ids have different eof actions. For example, in the following command, the action for an end-of-file on o1
is return, while the action for an end-of-file on o2
is "close $i
“.
interact -input $i -output $o1 -output $o2 eof { close $i }
Input spawn ids can be combined similarly. The following command takes the input from i1
and i2
and sends it to o1
.
interact -input "$i1 $i2" -output $o1
Note that writing two -input
flags in a row with no -output
in between causes the first input source to be discarded. This can be quite useful for the same reasons that it is occasionally handy to redirect output to /dev/null
in the shell.
Using these shorthands, it is possible to write the interact
in kibitz
more succinctly:
interact { -input "$user_spawn_id $userin" -output $process -input $process -output "$user_spawn_id $userout" }
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.