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

${ var }

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

$-

Current ...

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