The interpreter Command

When Expect runs interactively, it prompts for a command. The command is evaluated and Expect prompts for another command. This continues, typically, until you press ^D or enter the exit command. It is possible to kill Expect in a myriad of other ways, such as by sending it a kill signal or closing the standard input but I will not describe these further here.

When Expect is interactively prompting for commands, it is actually running a command called interpreter. The interpreter command can be invoked just like any command. It takes no arguments and is invoked simply as:


The interpreter command is often used just for experimenting with Expect. For example, you might write a dozen or so lines of code at a time and then want to test them out even though the script is not complete. Rather than just having the script exit, you can stick in an interpreter command at the end. When the script is executed, you will get control so you can see what has been accomplished and can play around a little more.

With a small modification to any script, you can use interpreter as part of a general strategy for catching any errors. Nest any executable commands at the top level inside a catch command. This technique is ideal once you have a complete script but are still running across occasional errors. Make your script look like this:

# define all procedures proc first { . . . proc second { . . . proc third { . . . # call first procedure that starts things rolling ...

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.