Shell functions are a way to group commands for later execution using a single name for the group. They are executed just like a "regular" command. Shell functions are executed in the current shell context; no new process is created to interpret them.
Functions are declared using this syntax:
[ function
] name () { command-list; }
This defines a shell function named name. The reserved
word function
is optional.
If the function
reserved
word is supplied, the parentheses are optional.
The body of the function is the command-list between { and }.
This list is executed whenever name is specified as the
name of a command. The exit status of a function is
the exit status of the last command executed in the body.
When a function is executed, the arguments to the
function become the positional parameters
during its execution (see section Positional Parameters).
The special parameter `#' that expands to the number of
positional parameters is updated to reflect the change.
Positional parameter 0
is unchanged.
If the builtin command return
is executed in a function, the function completes and
execution resumes with the next command after the function
call. When a function completes, the values of the
positional parameters and the special parameter `#'
are restored to the values they had prior to the function's
execution. If a numeric argument is given to return
,
that is the function's return status; otherwise the functions's
return status is the exit status of the last command executed
before the return
.
Variables local to the function may be declared with the
local
builtin. These variables are visible only to
the function and the commands it invokes.
Functions may be recursive. No limit is placed on the number of recursive calls.
Go to the first, previous, next, last section, table of contents.