How to Fix “integer expression expected” Error in Bash?

The Bash script is the most frequently used programming language for dealing with the Linux environment. It supports all the basics of datatypes of variables to perform operations such as comparing variables and generating results accordingly. However, the user might face the error of “integer expression expected” while writing any script, which stops the script’s working. The reason is typically caused when the wrong bash syntax is utilized such as using the wrong comparison operator.

This post will demonstrate the reasons and solutions for the error “integer expression expected error” in bash.

  • Incorrect Use of Comparison Operator
  • Solution: Utilize the Correct Comparison Operator

Reason: Incorrect Use of Comparison Operator

The error is invalid bash syntax, such as using the non-integer value instead of an integer while comparing them. In the following script, the two strings are compared to check whether they are equal or not using the “eq” operator, but the comparison operator is wrong here. As the “eq,” “lt,” and “gt” type of operator deals with integer values only so it will display the error that “integer expression expected”:

#!/bin/bash

string1="hello"
String2="hello"

if [ "$string1" -eq "$string2" ]
then
echo "Strings Are Equal"
fi

Save and run the script in the terminal:

$ bash script.sh

The error occurred on the line “integer expression expected.”

Solution: Utilize the Correct Comparison Operator

To fix this error, use the correct Bash syntax and use the integer value where required instead of non-integer values. In our case, using the comparison operator for comparing the two strings will resolve the error.

OperatorsScenarios to use
-eq, -lt, -gt, -ge, -le, -neUse these operators when comparing operands, i.e., “integer.
=, !=These operators are utilized when comparing operands are “string.” 

So, according to the above table, the “-eq” operator should be replaced with the “=” to compare the string in the script. Let’s apply this in our script and check the results:

#!/bin/bash

string1="hello"
String2="hello"

if [ "$string1"="$string2" ]
then
echo "Strings Are Equal"
fi

Once the script is modified, save and exit the file.

Run the script using the bash command in the terminal:

$ bash script.sh

The error is resolved, and both strings are equal.

Conclusion

The “integer expression expected” error occurs if the wrong bash syntax is utilized, such as non-integer values instead of an integer. To fix this error, use the correct bash syntax for integer and non-integer values such as -eq, -lt, -gt, -ge, -le, and -ne operators require integer operands to compare. While “=” and “!=” operators require both strings operands to compare. 

This write-up has illuminated the reason and the solution for the error “integer expression expected” in the bash script.