1This file is reserved.def, in which the shell reserved words are defined.
2It has no direct C file production, but defines builtins for the Bash
3builtin help command.
4
5Copyright (C) 1987-2019 Free Software Foundation, Inc.
6
7This file is part of GNU Bash, the Bourne Again SHell.
8
9Bash is free software: you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation, either version 3 of the License, or
12(at your option) any later version.
13
14Bash is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with Bash.  If not, see <http://www.gnu.org/licenses/>.
21
22$BUILTIN for
23$SHORT_DOC for NAME [in WORDS ... ] ; do COMMANDS; done
24Execute commands for each member in a list.
25
26The `for' loop executes a sequence of commands for each member in a
27list of items.  If `in WORDS ...;' is not present, then `in "$@"' is
28assumed.  For each element in WORDS, NAME is set to that element, and
29the COMMANDS are executed.
30
31Exit Status:
32Returns the status of the last command executed.
33$END
34
35$BUILTIN for ((
36$DOCNAME arith_for
37$SHORT_DOC for (( exp1; exp2; exp3 )); do COMMANDS; done
38Arithmetic for loop.
39
40Equivalent to
41	(( EXP1 ))
42	while (( EXP2 )); do
43		COMMANDS
44		(( EXP3 ))
45	done
46EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is
47omitted, it behaves as if it evaluates to 1.
48
49Exit Status:
50Returns the status of the last command executed.
51$END
52
53$BUILTIN select
54$SHORT_DOC select NAME [in WORDS ... ;] do COMMANDS; done
55Select words from a list and execute commands.
56
57The WORDS are expanded, generating a list of words.  The
58set of expanded words is printed on the standard error, each
59preceded by a number.  If `in WORDS' is not present, `in "$@"'
60is assumed.  The PS3 prompt is then displayed and a line read
61from the standard input.  If the line consists of the number
62corresponding to one of the displayed words, then NAME is set
63to that word.  If the line is empty, WORDS and the prompt are
64redisplayed.  If EOF is read, the command completes.  Any other
65value read causes NAME to be set to null.  The line read is saved
66in the variable REPLY.  COMMANDS are executed after each selection
67until a break command is executed.
68
69Exit Status:
70Returns the status of the last command executed.
71$END
72
73$BUILTIN time
74$SHORT_DOC time [-p] pipeline
75Report time consumed by pipeline's execution.
76
77Execute PIPELINE and print a summary of the real time, user CPU time,
78and system CPU time spent executing PIPELINE when it terminates.
79
80Options:
81  -p	print the timing summary in the portable Posix format
82
83The value of the TIMEFORMAT variable is used as the output format.
84
85Exit Status:
86The return status is the return status of PIPELINE.
87$END
88
89$BUILTIN case
90$SHORT_DOC case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
91Execute commands based on pattern matching.
92
93Selectively execute COMMANDS based upon WORD matching PATTERN.  The
94`|' is used to separate multiple patterns.
95
96Exit Status:
97Returns the status of the last command executed.
98$END
99
100$BUILTIN if
101$SHORT_DOC if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
102Execute commands based on conditional.
103
104The `if COMMANDS' list is executed.  If its exit status is zero, then the
105`then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list is
106executed in turn, and if its exit status is zero, the corresponding
107`then COMMANDS' list is executed and the if command completes.  Otherwise,
108the `else COMMANDS' list is executed, if present.  The exit status of the
109entire construct is the exit status of the last command executed, or zero
110if no condition tested true.
111
112Exit Status:
113Returns the status of the last command executed.
114$END
115
116$BUILTIN while
117$SHORT_DOC while COMMANDS; do COMMANDS; done
118Execute commands as long as a test succeeds.
119
120Expand and execute COMMANDS as long as the final command in the
121`while' COMMANDS has an exit status of zero.
122
123Exit Status:
124Returns the status of the last command executed.
125$END
126
127$BUILTIN until
128$SHORT_DOC until COMMANDS; do COMMANDS; done
129Execute commands as long as a test does not succeed.
130
131Expand and execute COMMANDS as long as the final command in the
132`until' COMMANDS has an exit status which is not zero.
133
134Exit Status:
135Returns the status of the last command executed.
136$END
137
138$BUILTIN coproc
139$SHORT_DOC coproc [NAME] command [redirections]
140Create a coprocess named NAME.
141
142Execute COMMAND asynchronously, with the standard output and standard
143input of the command connected via a pipe to file descriptors assigned
144to indices 0 and 1 of an array variable NAME in the executing shell.
145The default NAME is "COPROC".
146
147Exit Status:
148The coproc command returns an exit status of 0.
149$END
150
151$BUILTIN function
152$SHORT_DOC function name { COMMANDS ; } or name () { COMMANDS ; }
153Define shell function.
154
155Create a shell function named NAME.  When invoked as a simple command,
156NAME runs COMMANDs in the calling shell's context.  When NAME is invoked,
157the arguments are passed to the function as $1...$n, and the function's
158name is in $FUNCNAME.
159
160Exit Status:
161Returns success unless NAME is readonly.
162$END
163
164$BUILTIN { ... }
165$DOCNAME grouping_braces
166$SHORT_DOC { COMMANDS ; }
167Group commands as a unit.
168
169Run a set of commands in a group.  This is one way to redirect an
170entire set of commands.
171
172Exit Status:
173Returns the status of the last command executed.
174$END
175
176$BUILTIN %
177$DOCNAME fg_percent
178$SHORT_DOC job_spec [&]
179Resume job in foreground.
180
181Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a
182stopped or background job.  JOB_SPEC can specify either a job name
183or a job number.  Following JOB_SPEC with a `&' places the job in
184the background, as if the job specification had been supplied as an
185argument to `bg'.
186
187Exit Status:
188Returns the status of the resumed job.
189$END
190
191$BUILTIN (( ... ))
192$DOCNAME arith
193$SHORT_DOC (( expression ))
194Evaluate arithmetic expression.
195
196The EXPRESSION is evaluated according to the rules for arithmetic
197evaluation.  Equivalent to `let "EXPRESSION"'.
198
199Exit Status:
200Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise.
201$END
202
203$BUILTIN [[ ... ]]
204$DOCNAME conditional
205$SHORT_DOC [[ expression ]]
206Execute conditional command.
207
208Returns a status of 0 or 1 depending on the evaluation of the conditional
209expression EXPRESSION.  Expressions are composed of the same primaries used
210by the `test' builtin, and may be combined using the following operators:
211
212  ( EXPRESSION )	Returns the value of EXPRESSION
213  ! EXPRESSION		True if EXPRESSION is false; else false
214  EXPR1 && EXPR2	True if both EXPR1 and EXPR2 are true; else false
215  EXPR1 || EXPR2	True if either EXPR1 or EXPR2 is true; else false
216
217When the `==' and `!=' operators are used, the string to the right of
218the operator is used as a pattern and pattern matching is performed.
219When the `=~' operator is used, the string to the right of the operator
220is matched as a regular expression.
221
222The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to
223determine the expression's value.
224
225Exit Status:
2260 or 1 depending on value of EXPRESSION.
227$END
228
229$BUILTIN variables
230$DOCNAME variable_help
231$SHORT_DOC variables - Names and meanings of some shell variables
232Common shell variable names and usage.
233
234BASH_VERSION	Version information for this Bash.
235CDPATH	A colon-separated list of directories to search
236		for directories given as arguments to `cd'.
237GLOBIGNORE	A colon-separated list of patterns describing filenames to
238		be ignored by pathname expansion.
239#if defined (HISTORY)
240HISTFILE	The name of the file where your command history is stored.
241HISTFILESIZE	The maximum number of lines this file can contain.
242HISTSIZE	The maximum number of history lines that a running
243		shell can access.
244#endif /* HISTORY */
245HOME	The complete pathname to your login directory.
246HOSTNAME	The name of the current host.
247HOSTTYPE	The type of CPU this version of Bash is running under.
248IGNOREEOF	Controls the action of the shell on receipt of an EOF
249		character as the sole input.  If set, then the value
250		of it is the number of EOF characters that can be seen
251		in a row on an empty line before the shell will exit
252		(default 10).  When unset, EOF signifies the end of input.
253MACHTYPE	A string describing the current system Bash is running on.
254MAILCHECK	How often, in seconds, Bash checks for new mail.
255MAILPATH	A colon-separated list of filenames which Bash checks
256		for new mail.
257OSTYPE	The version of Unix this version of Bash is running on.
258PATH	A colon-separated list of directories to search when
259		looking for commands.
260PROMPT_COMMAND	A command to be executed before the printing of each
261		primary prompt.
262PS1		The primary prompt string.
263PS2		The secondary prompt string.
264PWD		The full pathname of the current directory.
265SHELLOPTS	A colon-separated list of enabled shell options.
266TERM	The name of the current terminal type.
267TIMEFORMAT	The output format for timing statistics displayed by the
268		`time' reserved word.
269auto_resume	Non-null means a command word appearing on a line by
270		itself is first looked for in the list of currently
271		stopped jobs.  If found there, that job is foregrounded.
272		A value of `exact' means that the command word must
273		exactly match a command in the list of stopped jobs.  A
274		value of `substring' means that the command word must
275		match a substring of the job.  Any other value means that
276		the command must be a prefix of a stopped job.
277#if defined (HISTORY)
278#  if defined (BANG_HISTORY)
279histchars	Characters controlling history expansion and quick
280		substitution.  The first character is the history
281		substitution character, usually `!'.  The second is
282		the `quick substitution' character, usually `^'.  The
283		third is the `history comment' character, usually `#'.
284#  endif /* BANG_HISTORY */
285HISTIGNORE	A colon-separated list of patterns used to decide which
286		commands should be saved on the history list.
287#endif /* HISTORY */
288$END
289