capture
Returns a command’s output as a string
Format
capture [ -out | -err | -both ] [ -f filename ] command
Arguments
-out
Captures only output sent to stdout.
-err
Captures only output sent to stderr.
-both
Captures output sent to both stdout and stderr. This is the default.
-f filename
Sends the captured output to filename. The file must be a writable Tcl file descriptor.
command
The CLI command (or commands) whose output is being captured. If you specify more than one command, you must enclose them within braces ({ }).
Description
The capture command executes command, capturing in a string all output that would normally go to the console. After command completes, it returns the string. This command is analogous to the UNIX shell’s back-tick feature (`command`). The capture command obtains the printed output of any CLI command so that you can assign it to a variable or otherwise manipulate it.
Examples
set save_stat [ capture st ]
Saves the current process status to a Tcl variable.
set arg [ capture p argc]
Saves the printed value of argc into a Tcl variable.
set vbl [ capture {foreach i {1 2 3 4} \
{p int2_array($i )}} ]
Saves the printed output of four array elements into a Tcl variable. Here is sample output:
int2_array(1) = -8 (0xfff8)
int2_array(2) = -6 (0xfffa)
int2_array(3) = -4 (0xfffc)
int2_array(4) = -2 (0xfffe)
Because the capture command records all information sent to it by the commands in the foreach loop, you do not have to use a dlist command.
exec cat << [ capture help commands ] > cli_help.txt
Writes the help text for all CLI commands to the cli_help.txt file.
set ofile [open cli_help.txt w]
capture -f $ofile help commands
close $ofile
Also writes the help text for all CLI commands to the cli_help.txt file. This set of commands is more efficient than the previous command because the captured data is not -buffered.
Related Topics