Name

declare

Synopsis

    declare [options] [name[=value]]

Bash only. Declare variables and manage their attributes. In function bodies, variables are local, as if declared with the local command.

Options

-a

Each name is an array.

-f

Each name is a function.

-F

For functions, print just the functions’ name and attributes, not the function definition (body).

-i

Each variable is an integer; in an assignment, the value is evaluated as an arithmetic expression.

-p

With no names, print all variables and their values. With names, print the names, attributes, and values of the given variables. This option causes all other options to be ignored.

-r

Mark names as read-only. Subsequent assignments will fail.

-t

Apply the trace attribute to each name. Traced functions inherit the DEBUG trap. This attribute has no meaning for variables.

-x

Mark names for export into the environment of child processes.

With a + instead of a -, the given attribute is disabled. With no variable names, all variables having the given attribute(s) are printed in a form that can be reread as input to the shell.

Examples

$ declare -i val              
                     Make val an integer
    $ val=4+7                     
                     Evaluate value
    $ echo $val                   
                     Show result
    11

    $ declare -r z=42             
                     Make z readonly
    $ z=31                        
                     Try to assign to it
    bash: z: readonly variable    Assignment fails
    $ echo $z
    42

    $ declare -p val z            
                     Show attributes and values
    declare -i val="11"
    declare -r z="42"

Get Unix in a Nutshell, 4th 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.