Redirecting The Standard Input Or Output

Earlier I showed that the expect_user command reads from the standard input. By default, the standard input is the keyboard. However, like any program, Expect can have its standard input redirected. This is done using the usual shell redirection syntax.

% script < input-file

In the command above, the Expect script reads its standard input from input-file. Whenever an expect_user command occurs, input is also read from input-file. In this way, Expect can act as a filter. The same thing happens when Expect is called in these other ways:

% expect script < input-file
% cat input-file | expect script
% cat input-file | expect script | yet-another-script

In all of these commands, input comes from input-file, and the Expect script controls what happens.

The send_user command is analogous to expect_user. The send_user command sends output to the standard output. By default, the standard output is the screen. If the standard output is redirected, then send_user will send output to where the redirection indicates.

It is also possible to read commands (rather than data) from the standard input. I will describe this in Chapter 9 (p. 220).

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.