[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
13.3 Reading the output of commands
If you want m4
to read the output of a shell command, use
esyscmd
:
- Builtin: esyscmd (shell-command)
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 standard error 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
.By default, the shell-command will be used as the argument to the ‘-c’ option of the
/bin/sh
shell (or the version ofsh
specified by ‘command -p getconf PATH’, if your system supports that). If you prefer a different shell, theconfigure
script can be given the option ‘--with-syscmd-shell=location’ to set the location of an alternative shell at GNUm4
installation; the alternative shell must still support ‘-c’.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
.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on September 29, 2013 using texi2html 5.0.