# Return built-in

The return built-in returns from a function or script.

## Syntax

- `return [-n] [exit_status]`

## Description

When executed without the `-n` (`--no-return`) option, one of the following happens:

- If the shell is executing a function, the execution of the function is terminated.

- If the dot built-in is executing a script, the execution of the script is terminated.

- If the eval built-in is executing a command string, the execution of the command is terminated.

- Otherwise, the shell exits unless it is interactive.

When executed with the `-n` (`--no-return`) option, the built-in does nothing but return the specified exit_status.

## Options

`-n`
`--no-return`

  Do not terminate a function, script, evaluated command, or the shell.

## Operands

exit_status

  The exit status of the built-in.

  The value must be a non-negative integer.

  If omitted, the exit status of the last executed command is used. (But when the shell is executing a trap, the exit status of the last command before the trap is used.)

## Exit status

The exit status of the return built-in is defined by the exit_status operand. The exit status is used also as the exit status of the terminated function, script, evaluated script, or the shell.

## Notes

The return built-in is a special built-in.

The POSIX standard provides that the exit_status operand should be between 0 and 255 (inclusive). Yash accepts integers larger than 255 as an extension.

In the POSIX standard, the behavior of the return built-in is defined only when the shell is executing a function or script.

The POSIX standard defines no options for the return built-in; the built-in accepts no options in the POSIXly-correct mode.