mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-26 10:43:47 +08:00
47 lines
1.3 KiB
ReStructuredText
47 lines
1.3 KiB
ReStructuredText
|
\section begin begin - start a new block of code
|
||
|
|
||
|
\subsection begin-synopsis Synopsis
|
||
|
\fish{synopsis}
|
||
|
begin; [COMMANDS...;] end
|
||
|
\endfish
|
||
|
|
||
|
\subsection begin-description Description
|
||
|
|
||
|
`begin` is used to create a new block of code.
|
||
|
|
||
|
A block allows the introduction of a new variable 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.
|
||
|
|
||
|
|
||
|
\subsection begin-example 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.
|
||
|
|
||
|
\fish
|
||
|
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
|
||
|
\endfish
|
||
|
|
||
|
In the following code, all output is redirected to the file out.html.
|
||
|
|
||
|
\fish
|
||
|
begin
|
||
|
echo $xml_header
|
||
|
echo $html_header
|
||
|
if test -e $file
|
||
|
...
|
||
|
end
|
||
|
...
|
||
|
end > out.html
|
||
|
\endfish
|