spawn -noecho
In the previous example, all of the commands were entered interactively. When this is done, the return values of all commands are automatically printed by Expect. In the case of the spawn command, the return value was the process id. In that example, the process id was 18961. The command also echoed itself as a side effect. This is not the return value. If a spawn command appears in a script, the process id will no longer be printed to the standard output, but the command itself still echoes.
This echoing is intended as a convenience for simple scripts, much as the echoing performed by the expect command itself is. Both of these can be disabled with the log_user command. However, the log_user command disables all of the spawned program’s output. To disable just the echoing produced by the spawn command, use the -noecho flag. This flag affects nothing else. Here is the previous example repeated using that flag.
%expectexpect1.1>spawn -noecho noprog18961 expect1.2>expect -re .+noprog: No such file or directory expect1.3>puts "expect_out = <$expect_out(buffer)>\n"expect_out = <noprog: No such file or directory>
Here is the same example, but using "log_user 0" instead of -noecho. Notice that both spawn and expect no longer echo anything.
%expectexpect1.1>log_user 0expect1.2>spawn noprog18961 expect1.3>expect -re .+expect1.4>puts "expect_out = <$expect_out(buffer)>\n"expect_out = <noprog: No such file or directory>
In all cases, spawn still produces a return ...