this is “inefficient” for production software but is reasonable for development tools

stdout and stderr are collected and sent to the appropriate output pins (output and error)

in this case, $m4 invokes the m4 command and gives it stdin from the input pin input

components with $ as the first character in their name are converted to shell-outs

call-outs to existing software