DragonFly On-Line Manual Pages
BUILTIN(1) DragonFly General Commands Manual BUILTIN(1)
NAME
builtin, !, %, ., :, @, [, {, }, alias, alloc, bg, bind, bindkey, break,
breaksw, builtins, case, cd, chdir, command, complete, continue, default,
dirs, do, done, echo, echotc, elif, else, end, endif, endsw, esac, eval,
exec, exit, export, false, fc, fg, filetest, fi, for, foreach, getopts,
glob, goto, hash, hashstat, history, hup, if, jobid, jobs, kill, let,
limit, local, log, login, logout, ls-F, nice, nohup, notify, onintr,
popd, printenv, printf, pushd, pwd, read, readonly, rehash, repeat,
return, sched, set, setenv, settc, setty, setvar, shift, source, stop,
suspend, switch, telltc, termname, test, then, time, times, trap, true,
type, ulimit, umask, unalias, uncomplete, unhash, unlimit, unset,
unsetenv, until, wait, where, which, while, wordexp, wordexp2 - shell
built-in commands
SYNOPSIS
See the built-in command description in the appropriate shell manual
page.
DESCRIPTION
Shell builtin commands are commands that can be executed within the
running shell's process. Note that, in the case of csh(1) builtin
commands, the command is executed in a subshell if it occurs as any
component of a pipeline except the last.
If a command specified to the shell contains a slash `/', the shell will
not execute a builtin command, even if the last component of the
specified command matches the name of a builtin command. Thus, while
specifying "echo" causes a builtin command to be executed under shells
that support the echo builtin command, specifying "/bin/echo" or "./echo"
does not.
While some builtin commands may exist in more than one shell, their
operation may be different under each shell which supports them. Below
is a table which lists shell builtin commands, the standard shells that
support them and whether they exist as standalone utilities.
Only builtin commands for the csh(1) and sh(1) shells are listed here.
Consult a shell's manual page for details on the operation its builtin
commands. Beware that the sh(1) manual page, at least, calls some of
these commands "built-in commands" and some of them "reserved words".
Users of other shells may need to consult an info(1) page or other
sources of documentation.
Commands marked "No**" under External do exist externally, but are
implemented as scripts using a builtin command of the same name.
Command External csh(1) sh(1)
! No No Yes
% No Yes No
. No No Yes
: No Yes Yes
@ No Yes No
[ Yes No Yes
{ No No Yes
} No No Yes
alias No** Yes Yes
alloc No Yes No
bg No** Yes Yes
bind No No Yes
bindkey No Yes No
break No Yes Yes
breaksw No Yes No
builtin No No Yes
builtins No Yes No
case No Yes Yes
cd No** Yes Yes
chdir No Yes Yes
command No** No Yes
complete No Yes No
continue No Yes Yes
default No Yes No
dirs No Yes No
do No No Yes
done No No Yes
echo Yes Yes Yes
echotc No Yes No
elif No No Yes
else No Yes Yes
end No Yes No
endif No Yes No
endsw No Yes No
esac No No Yes
eval No Yes Yes
exec No Yes Yes
exit No Yes Yes
export No No Yes
false Yes No Yes
fc No** No Yes
fg No** Yes Yes
filetest No Yes No
fi No No Yes
for No No Yes
foreach No Yes No
getopts No** No Yes
glob No Yes No
goto No Yes No
hash No No Yes
hashstat No Yes No
history No Yes No
hup No Yes No
if No Yes Yes
jobid No No Yes
jobs No** Yes Yes
kill Yes Yes Yes
let No No Yes
limit No Yes No
local No No Yes
log No Yes No
login Yes Yes No
logout No Yes No
ls-F No Yes No
nice Yes Yes No
nohup Yes Yes No
notify No Yes No
onintr No Yes No
popd No Yes No
printenv Yes Yes No
printf Yes No Yes
pushd No Yes No
pwd Yes No Yes
read No** No Yes
readonly No No Yes
rehash No Yes No
repeat No Yes No
return No No Yes
sched No Yes No
set No Yes Yes
setenv No Yes No
settc No Yes No
setty No Yes No
setvar No No Yes
shift No Yes Yes
source No Yes No
stop No Yes No
suspend No Yes No
switch No Yes No
telltc No Yes No
termname No Yes No
test Yes No Yes
then No No Yes
time Yes Yes No
times No No Yes
trap No No Yes
true Yes No Yes
type No No Yes
ulimit No No Yes
umask No** Yes Yes
unalias No** Yes Yes
uncomplete No Yes No
unhash No Yes No
unlimit No Yes No
unset No Yes Yes
unsetenv No Yes No
until No No Yes
wait No** Yes Yes
where No Yes No
which Yes Yes No
while No Yes Yes
wordexp No No Yes
wordexp2 No No Yes
Note that the wordexp and wordexp2 commands are only meant to be used by
wordexp(3) and not by the user.
SEE ALSO
csh(1), echo(1), false(1), info(1), kill(1), login(1), nice(1), nohup(1),
printenv(1), printf(1), pwd(1), sh(1), test(1), time(1), true(1),
which(1), wordexp(3)
HISTORY
The builtin manual page first appeared in FreeBSD 3.4.
AUTHORS
This manual page was written by Sheldon Hearn <sheldonh@FreeBSD.org>.
DragonFly 5.9-DEVELOPMENT October 9, 2020 DragonFly 5.9-DEVELOPMENT
switch(n) Tcl Built-In Commands switch(n)
______________________________________________________________________________
NAME
switch - Evaluate one of several scripts, depending on a given value
SYNOPSIS
switch ?options? string pattern body ?pattern body ...?
switch ?options? string {pattern body ?pattern body ...?}
______________________________________________________________________________
DESCRIPTION
The switch command matches its string argument against each of the
pattern arguments in order. As soon as it finds a pattern that matches
string it evaluates the following body argument by passing it
recursively to the Tcl interpreter and returns the result of that
evaluation. If the last pattern argument is default then it matches
anything. If no pattern argument matches string and no default is
given, then the switch command returns an empty string.
If the initial arguments to switch start with - then they are treated
as options unless there are exactly two arguments to switch (in which
case the first must the string and the second must be the pattern/body
list). The following options are currently supported:
-exact Use exact matching when comparing string to a pattern. This
is the default.
-glob When matching string to the patterns, use glob-style matching
(i.e. the same as implemented by the string match command).
-regexp When matching string to the patterns, use regular expression
matching (as described in the re_syntax reference page).
-nocase Causes comparisons to be handled in a case-insensitive
manner.
-matchvar varName
This option (only legal when -regexp is also specified)
specifies the name of a variable into which the list of
matches found by the regular expression engine will be
written. The first element of the list written will be the
overall substring of the input string (i.e. the string
argument to switch) matched, the second element of the list
will be the substring matched by the first capturing
parenthesis in the regular expression that matched, and so
on. When a default branch is taken, the variable will have
the empty list written to it. This option may be specified
at the same time as the -indexvar option.
-indexvar varName
This option (only legal when -regexp is also specified)
specifies the name of a variable into which the list of
indices referring to matching substrings found by the regular
expression engine will be written. The first element of the
list written will be a two-element list specifying the index
of the start and index of the first character after the end
of the overall substring of the input string (i.e. the string
argument to switch) matched, in a similar way to the -indices
option to the regexp can obtain. Similarly, the second
element of the list refers to the first capturing parenthesis
in the regular expression that matched, and so on. When a
default branch is taken, the variable will have the empty
list written to it. This option may be specified at the same
time as the -matchvar option.
-- Marks the end of options. The argument following this one
will be treated as string even if it starts with a -. This
is not required when the matching patterns and bodies are
grouped together in a single argument.
Two syntaxes are provided for the pattern and body arguments. The
first uses a separate argument for each of the patterns and commands;
this form is convenient if substitutions are desired on some of the
patterns or commands. The second form places all of the patterns and
commands together into a single argument; the argument must have proper
list structure, with the elements of the list being the patterns and
commands. The second form makes it easy to construct multi-line switch
commands, since the braces around the whole list make it unnecessary to
include a backslash at the end of each line. Since the pattern
arguments are in braces in the second form, no command or variable
substitutions are performed on them; this makes the behavior of the
second form different than the first form in some cases.
If a body is specified as "-" it means that the body for the next
pattern should also be used as the body for this pattern (if the next
pattern also has a body of "-" then the body after that is used, and so
on). This feature makes it possible to share a single body among
several patterns.
Beware of how you place comments in switch commands. Comments should
only be placed inside the execution body of one of the patterns, and
not intermingled with the patterns.
EXAMPLES
The switch command can match against variables and not just literals,
as shown here (the result is 2):
set foo "abc"
switch abc a - b {expr {1}} $foo {expr {2}} default {expr {3}}
Using glob matching and the fall-through body is an alternative to
writing regular expressions with alternations, as can be seen here
(this returns 1):
switch -glob aaab {
a*b -
b {expr {1}}
a* {expr {2}}
default {expr {3}}
}
Whenever nothing matches, the default clause (which must be last) is
taken. This example has a result of 3:
switch xyz {
a -
b {
# Correct Comment Placement
expr {1}
}
c {
expr {2}
}
default {
expr {3}
}
}
When matching against regular expressions, information about what
exactly matched is easily obtained using the -matchvar option:
switch -regexp -matchvar foo -- $bar {
a(b*)c {
puts "Found [string length [lindex $foo 1]] 'b's"
}
d(e*)f(g*)h {
puts "Found [string length [lindex $foo 1]] 'e's and\
[string length [lindex $foo 2]] 'g's"
}
}
SEE ALSO
for(n), if(n), regexp(n)
KEYWORDS
switch, match, regular expression
Tcl 8.5 switch(n)