Variables
Preface a variable
by a dollar sign ($
) to reference its value. You
can also optionally enclose it in braces ({ }
).
You can assign a value to a variable through an equals sign
(=
) with no whitespace on either side of it:
$ TMP=temp.file
By default, variables are seen only within the shell itself; to pass
variables to other programs invoked within the shell, see the
export
built-in command.
If enclosed by brackets ([ ]
), the variable is
considered an array variable. For instance:
$DIR_LIST[0]=src
$DIR_LIST[1]=headers
$ls ${DIR_LIST[1]}
The contents of headers
are listed. Many
substitutions and commands in this chapter handle arrays by operating
on each element separately.
Variable Substitution
In the following substitutions,
braces ({ }
) are optional, except when needed to
separate a variable name from following characters that would
otherwise be considered part of the name.
Variable |
Meaning |
---|---|
${ |
Value of variable var. |
$0 |
Name of the program. |
${ |
Individual arguments on command line (positional parameters); 1 n 9. |
$# |
Number of arguments on command line. |
$* |
All arguments on command line. |
$@ |
Same as $*, but contents are split into words when the variable is enclosed in double quotes. |
$$ |
Process number of current shell; useful as part of a filename for creating temporary files with unique names. |
$? |
Exit status of last command (normally 0 for success). |
$! |
Process number of most recently issued background command. |
$- |
Current execution options (see the ... |
Get Mac OS X Panther in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.