Whenever wedeclareany variable, by default, this variable stores the string type of data. We cannot doarithmeticoperations on them. We can declare a variable as an integer by using thedeclare
command. Such variables are declared as integers; if we try to assign a string to them, then bash assigns0
to these variables.
Bash will report an error if we try to assign fractional values (floating points) to integer variables.
We can create an integer variable calledvalue
, shown as follows:
$ declare -i value
We tell the shell that the variable value is of type integer. Otherwise, the shell treats all variables as character strings:
- If we try to assign the
name
string to the integer variablevalue
, then thevalue
variable will be assigned the0
value by the Bash shell:
$ value=name$ echo $value0
- We need to enclose numbers between double quotes, otherwise we should not use a space in arithmetic expressions:
$ value=4 + 4bash: +: command not found
- When we removewhitespaces, the error also gets removed, and thearithmeticoperation takes place:
$ value=4+4$ echo $value8
- We can perform a multiplication operation as follows:
$ value=4*3$ echo $value12$ value="4 * 5"$ echo $value20
- Since we have enclosed numbers in
""
, the multiplication operation is performed. Due to double quotes (""
), the*
operator was not used as a wildcard (*
):
$ value=5.6bash: 5.6: syntax error: invalid arithmetic operator (error token is ".6").
Since we have declared the value
variable as an integer variable, when we initialize the variable with a floating point number, the error gets displayed by the Bash shell.
Listing integers
If we want to see all declared integer variables along with their values, then we must give the following command:
$ declare -i
This should produce the following output:
declare -ir BASHPID=""declare -ir EUID="1001"declare -i HISTCMD=""declare -i LINENO=""declare -i MAILCHECK="60"declare -i OPTIND="1"declare -ir PPID="1966"declare -i RANDOM=""declare -ir UID="1001"