mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-20 07:51:14 -03:00
No need to define "cmd-foo" anchors; use :doc:`foo <cmds/foo>`
instead. If we want "cmd-foo" but it should be tested.
See also 38b24c2325 (docs: Use :doc: role when linking to commands,
2022-09-23).
57 lines
1.5 KiB
ReStructuredText
57 lines
1.5 KiB
ReStructuredText
begin - start a new block of code
|
|
=================================
|
|
|
|
Synopsis
|
|
--------
|
|
|
|
.. synopsis::
|
|
|
|
begin; [COMMANDS ...]; end
|
|
{ [COMMANDS ...] }
|
|
|
|
Description
|
|
-----------
|
|
|
|
``begin`` is used to create a new block of code.
|
|
|
|
A block allows the introduction of a new :ref:`variable scope <variables-scope>`, redirection of the input or output of a set of commands as a group, or to specify precedence when using the conditional commands like ``and``.
|
|
|
|
The block is unconditionally executed. ``begin; ...; end`` is equivalent to ``if true; ...; end``.
|
|
|
|
``begin`` does not change the current exit status itself. After the block has completed, ``$status`` will be set to the status returned by the most recent command.
|
|
|
|
Some other shells only support the ``{ [COMMANDS ...] ; }`` notation.
|
|
|
|
The **-h** or **--help** option displays help about using this command.
|
|
|
|
Example
|
|
-------
|
|
|
|
The following code sets a number of variables inside of a block scope. Since the variables are set inside the block and have local scope, they will be automatically deleted when the block ends.
|
|
|
|
::
|
|
|
|
begin
|
|
set -l PIRATE Yarrr
|
|
|
|
...
|
|
end
|
|
|
|
echo $PIRATE
|
|
# This will not output anything, since the PIRATE variable
|
|
# went out of scope at the end of the block
|
|
|
|
|
|
In the following code, all output is redirected to the file out.html.
|
|
|
|
::
|
|
|
|
begin
|
|
echo $xml_header
|
|
echo $html_header
|
|
if test -e $file
|
|
...
|
|
end
|
|
...
|
|
end > out.html
|