9.4. Typing variables: declare or typeset

The declare or typeset builtins (they are exact synonyms) permit restricting 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/typeset options

-r readonly
declare -r var1
                


( declare -r var1 works the same as readonly var1 )

This is the rough equivalent of the C const type qualifier. An attempt to change the value of a readonly variable fails with an error message.

-i integer
declare -i number
# The script will treat subsequent occurrences of "number" as an integer.   

number=3
echo "number = $number"     # number = 3

number=three
echo "number = $number"     # number = 0
# Tries to evaluate "three" as an integer.
                
Note that certain arithmetic operations are permitted for declared integer variables without the need for expr or let.

-a array
declare -a indices
                


The variable indices will be treated as an array.

-f functions
declare -f
                


A declare -f line with no arguments in a script causes a listing of all the functions previously defined in that script.

declare -f function_name
                


A declare -f function_name in a script lists just the function named.

-x export
declare -x var3
                


This declares a variable as available for exporting outside the environment of the script itself.

var=$value
declare -x var3=373
                


The declare command permits assigning a value to a variable in the same statement as setting its properties.

Example 9-20. Using declare to type variables

#!/bin/bash

func1 ()
{
echo This is a function.
}

declare -f        # Lists the function above.

echo

declare -i var1   # var1 is an integer.
var1=2367
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"

echo

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.
            
Retour en haut de la page
Mandragor.org - Version 8.3