declare
Declare variables with attributes.
Source: src/execution/builtins.f90:3249-3446
Synopsis
declare [-aAfFirx] [name[=value] ...]
typeset [-aAfFirx] [name[=value] ...]
Description
The declare builtin (also available as typeset) declares variables and sets attributes. It can also display variables and functions.
Options
| Option | Description |
|---|---|
-a | Indexed array |
-A | Associative array |
-f | Display functions |
-F | Display function names only |
-i | Integer attribute |
-r | Readonly attribute |
-x | Export attribute |
-p | Display in reusable format |
Usage
Declare Variables
declare myvar # Declare without value
declare myvar="value" # Declare with value
declare -i count=0 # Integer variable
declare -r CONST="fixed" # Readonly variable
declare -x EXPORTED="env" # Exported variable
Arrays
# Indexed array
declare -a arr
arr=(one two three)
# Associative array
declare -A map
map[key]="value"
Display Variables
declare -p myvar
# declare -- myvar="value"
declare -p arr
# declare -a arr=([0]="one" [1]="two" [2]="three")
Display Functions
declare -f # Show all functions with bodies
declare -F # Show function names only
declare -f funcname # Show specific function
Examples
Integer Arithmetic
declare -i num=5
num=num+3 # No $(()) needed
echo $num # 8
num="hello" # Evaluates to 0
echo $num # 0
Readonly Constants
declare -r PI=3.14159
declare -r VERSION="1.0.0"
PI=3 # Error: PI is readonly
Export and Declare
declare -x PATH="$PATH:/new/path"
# Equivalent to:
export PATH="$PATH:/new/path"
Local Variables in Functions
myfunc() {
local -i count=0
local -a items=()
local -A cache=()
# Use variables...
}
Attribute Combinations
declare -ri MAX_SIZE=100 # Readonly integer
declare -ax PATHS # Exported array
declare -Ar CONFIG # Readonly associative array
Display Format
declare -p var
Output format:
declare -- var="value"- Plain variabledeclare -i var="5"- Integerdeclare -r var="const"- Readonlydeclare -x var="env"- Exporteddeclare -a var=([0]="a" [1]="b")- Indexed arraydeclare -A var=([k1]="v1" [k2]="v2")- Associative array
Implementation
Source: builtins.f90:3249-3446
Key behaviors:
-acallsdeclare_indexed_array(shell, var_name)-Acallsdeclare_associative_array(shell, var_name)-rsetsshell%variables(i)%readonly = .true.-xsetsshell%variables(i)%exported = .true.
Exit Status
| Status | Condition |
|---|---|
| 0 | Success |
| 1 | Invalid option or variable name |
| 1 | Assignment to readonly variable |
Differences from Assignment
| Feature | declare var=x | var=x |
|---|---|---|
| Scope in function | Local | Global |
| Attributes | Supported | No |
| Arrays | Creates properly | Implicit |
Notes
- In functions,
declarecreates local variables by default typesetis an alias fordeclare-pwithout names shows all declared variables
See Also
- Variables - Variable overview
- Arrays - Indexed arrays
- Associative Arrays - Key-value arrays
- export - Export variables
- readonly - Make readonly