2006-10-31 23:23:16 +08:00
\section begin begin - start a new block of code
2005-09-20 21:31:55 +08:00
\subsection begin-synopsis Synopsis
2014-08-01 20:25:41 +08:00
\fish{synopsis}
2014-08-01 10:37:32 +08:00
begin; [COMMANDS...;] end
\endfish
2005-09-20 21:31:55 +08:00
\subsection begin-description Description
2014-08-01 10:37:32 +08:00
`begin` is used to create a new block of code.
Help cleanup
Large list of changes, including formatting and typos for most commands.
More substantive changes have been made to alias, bind, block, break,
builtin, case, cd, commandline, count, else, emit, fish_config, funced,
function, functions, history, math, mimedb, nextd, not, popd, prevd,
pushd, pwd, random, read, set, set_color, switch, test, trap, type,
ulimit, umask, and while.
2013-05-12 15:56:01 +08:00
2018-05-14 06:36:49 +08:00
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`.
Help cleanup
Large list of changes, including formatting and typos for most commands.
More substantive changes have been made to alias, bind, block, break,
builtin, case, cd, commandline, count, else, emit, fish_config, funced,
function, functions, history, math, mimedb, nextd, not, popd, prevd,
pushd, pwd, random, read, set, set_color, switch, test, trap, type,
ulimit, umask, and while.
2013-05-12 15:56:01 +08:00
2018-05-14 06:36:49 +08:00
The block is unconditionally executed. `begin; ...; end` is equivalent to `if true; ...; end`.
2005-09-20 21:31:55 +08:00
2017-08-11 21:05:28 +08:00
`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.
2006-07-13 01:31:41 +08:00
2014-08-19 20:41:23 +08:00
2005-09-20 21:31:55 +08:00
\subsection begin-example Example
2014-08-19 20:41:23 +08:00
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.
2005-09-20 21:31:55 +08:00
2014-08-01 10:37:32 +08:00
\fish
2005-09-20 21:31:55 +08:00
begin
2014-08-01 10:37:32 +08:00
set -l PIRATE Yarrr
2018-05-14 06:36:49 +08:00
2014-08-01 10:37:32 +08:00
...
2005-09-20 21:31:55 +08:00
end
2014-08-01 10:37:32 +08:00
echo $PIRATE
2014-08-19 20:41:23 +08:00
# This will not output anything, since the PIRATE variable
# went out of scope at the end of the block
2014-08-01 10:37:32 +08:00
\endfish
2006-07-20 21:33:19 +08:00
In the following code, all output is redirected to the file out.html.
2014-08-01 10:37:32 +08:00
\fish
2006-07-20 21:33:19 +08:00
begin
2014-08-01 10:37:32 +08:00
echo $xml_header
echo $html_header
if test -e $file
...
end
...
end > out.html
\endfish