Question: I am not sure about this comparison i am doing:

```
   if [ "$exit_status" -eq 0 ];then
   #some statements
   fi

```

is this correct way of comparing numbers or quotes make the variable `exit_status` a string
to be compared with 0.I don't know if this could fail in some scenario.

Answer: 
Yes, it is correct. 

Quotes in shells are for different purpose than in other languages. See [this answer](https://unix.stackexchange.com/a/65633/22565) for more details.

In shell, quotes are used to prevent the shell to treat some characters specially and to prevent some operations that the shell would otherwise perform upon some types of expansion (like in this case variable expansion).

Typically, in this case, you want `"$exit_status"` to be expanded to one argument to the `[` command that is the content of that varaible, so you need the quotes.
Quoting numbers is of little use though. If the parameter value is a number then the quotes don't change anything and if it is not then the if is going to fail anyway. OK, not in every case:

```
exit_status="a = a -o 0"; [ "$exit_status" -eq 0 ] # returns false
exit_status="a = a -o 0"; [ $exit_status -eq 0 ] # returns true

```

This is due to `[` being a bash builtin but nonetheless a simple command whereas `[[` is a compound command that changes command line parsing.