First of all, you are using `[` which is short hand for `test`. From `man test`:

>       STRING1 != STRING2
>              the strings are not equal
 
You're using wrong tool for the job. What you need is 

>      INTEGER1 -eq INTEGER2
>              INTEGER1 is equal to INTEGER2

Second, you have multiple conditions to test here. Instead of using one lengthy if statement , try to sum the output of each variable, as glenn suggested in comments, and test that. Alternatively, evaluate the output of each command right after it exist. There's no point in running others, if you're going to quit because that command's output anyway.

Here's a looping approach:

    for i in $X1 $X2 $X3 ; 
    do 
        [ $i -ne 0 ] && { echo "something failed"; exit 1; }
    done
    echo "Everything OK"

The trick here is that you're doing same test for each and every one of the variables, and if that test fails, the script will never get to the "Everything OK" part