Next: Sysval, Previous: Syscmd, Up: Shell commands
If you want m4
to read the output of a shell command, use
esyscmd
:
Expands to the standard output of the shell command shell-command.
Prior to executing the command,
m4
flushes its buffers. The default standard input and error output of shell-command are the same as those ofm4
. The error output of shell-command is not a part of the expansion: it will appear along with the error output ofm4
.The macro
esyscmd
is recognized only with parameters.
define(`foo', `FOO') => esyscmd(`echo foo') =>FOO =>
Note how the expansion of esyscmd
keeps the trailing newline of
the command, as well as using the newline that appeared after the macro.
Just as with syscmd
, care must be exercised when sharing standard
input between m4
and the child process of esyscmd
.