Variables

Variables are prefaced by a dollar sign ($) and optionally enclosed in braces ({}). You can assign a value to a variable through an equals sign (=); no whitespace can appear on either side of the equals sign:

$ 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 subscripted 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.

This subsection describes:

  • Variable substitution

  • Built-in shell variables

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
${ var } The value of variable var.
$0 Name of the program.
${ n }

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 ...

Get Linux in a Nutshell, Third 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.