Integer comparison in Bash using if-else

bash, if-statement

Solution

Your `read` line is incorrect. Change it to:

read choice

i.e. use the name of the variable you want to set, not its value.

`-eq` is the correct test to compare integers. See `man test` for the descriptions (or `man bash`).

An alternative would be using arithmetic evaluation instead (but you still need the correct `read` statement):

read choice

if (( $choice == 2 )) ; then
    echo 2
elif (( $choice == 1 )) ; then
    echo 1
else
    echo "Invalid choice!!"
fi

Problem

I have a variable called `choice`. Now, I try to use if to compare the entered value: ``` read $choice if [ "$choice" == 2 ];then #do something elif [ "$choice" == 1 ];then #do something else else echo "Invalid choice!!" fi ``` The output goes directly to invalid choice if I enter either 1 or 2. I tried to put quotes around 1 and 2 inside the if statement. Still didn't work. Using `-eq` gives me an error "Unary operator expected".What am I doing wrong here?

Original source