.. _cmd-end:

end - end a block of commands
=============================

Synopsis
--------

::

    begin; [COMMANDS...] end
    function NAME [OPTIONS]; COMMANDS...; end
    if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end
    switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
    while CONDITION; COMMANDS...; end
    for VARNAME in [VALUES...]; COMMANDS...; end

Description
-----------

``end`` ends a block of commands started by one of the following commands:

- :ref:`begin <cmd-begin>` to start a block of commands
- :ref:`function <cmd-function>` to define a function
- :ref:`if <cmd-if>`, :ref:`switch <cmd-switch>` to conditionally execute commands
- :ref:`while <cmd-while>`, :ref:`for <cmd-for>` to perform commands multiple times

The ``end`` command does not change the current exit status. Instead, the status after it will be the status returned by the most recent command.