shell function is unlike any other function except the
(see section The Function
wildcard) in that it
communicates with the world outside of
shell function performs the same function that backquotes
(``') perform in most shells: it does command expansion. This
means that it takes an argument that is a shell command and returns the
output of the command. The only processing
make does on the result,
before substituting it into the surrounding text, is to convert newlines to
The commands run by calls to the
shell function are run when the
function calls are expanded. In most cases, this is when the makefile is
read in. The exception is that function calls in the commands of the rules
are expanded when the commands are run, and this applies to
function calls like all others.
Here are some examples of the use of the
contents := $(shell cat foo)
contents to the contents of the file `foo', with a space
(rather than a newline) separating each line.
files := $(shell echo *.c)
files to the expansion of `*.c'. Unless
using a very strange shell, this has the same result as
Go to the first, previous, next, last section, table of contents.