The declare or
typesetbuiltins, which are exact synonyms,
permit modifying the properties of variables. This is
a very weak form of the typing
available in certain programming languages. The
declare command is specific to version
2 or later of Bash. The typeset command
also works in ksh scripts.
(declare -r var1 works the same as
This is the rough equivalent of the Cconst type qualifier. An attempt
to change the value of a readonly
variable fails with an error message.
declare -i number
# The script will treat subsequent occurrences of "number" as an integer.
echo "Number = $number" # Number = 3
echo "Number = $number" # Number = 0
# Tries to evaluate the string "three" as an integer.
Certain arithmetic operations are permitted
for declared integer variables without the need
for expr or let.
echo "n = $n" # n = 6/3
declare -i n
echo "n = $n" # n = 2
This declares a variable as available for exporting outside the
environment of the script itself.
declare -x var3=373
The declare command permits
assigning a value to a variable in the same statement
as setting its properties.
Example 9-10. Using declare to type variables
echo This is a function.
declare -f # Lists the function above.
declare -i var1 # var1 is an integer.
echo "var1 declared as $var1"
var1=var1+1 # Integer declaration eliminates the need for 'let'.
echo "var1 incremented by 1 is $var1."
# Attempt to change variable declared as integer.
echo "Attempting to change var1 to floating point value, 2367.1."
var1=2367.1 # Results in error message, with no change to variable.
echo "var1 is still $var1"
declare -r var2=13.36 # 'declare' permits setting a variable property
#+ and simultaneously assigning it a value.
echo "var2 declared as $var2" # Attempt to change readonly variable.
var2=13.37 # Generates error message, and exit from script.
echo "var2 is still $var2" # This line will not execute.
exit 0 # Script will not exit here.
Using the declare builtin
restricts the scope
of a variable.
bar # Prints bar.
However . . .
bar # Prints nothing.
# Thank you, Michael Iatrou, for pointing this out.
9.2.1. Another use for declare
The declare command can be
helpful in identifying variables, environmental or otherwise.
This can be especially useful with arrays.