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?