(m4.info)Esyscmd


Next: Sysval Prev: Syscmd Up: Shell commands

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 of `m4'.  The error output of SHELL-COMMAND is not a
     part of the expansion: it will appear along with the error output
     of `m4'.

     By default, the SHELL-COMMAND will be used as the argument to the
     `-c' option of the `/bin/sh' shell (or the version of `sh'
     specified by `command -p getconf PATH', if your system supports
     that).  If you prefer a different shell, the `configure' script
     can be given the option `--with-syscmd-shell=LOCATION' to set the
     location of an alternative shell at GNU `m4' 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'.


automatically generated by info2www