Hello,
I am using shell scripting and I am recieving odd results from my if statement
if [ $L1 -eq 0 -a $L2 -eq 1 -o $L2 -eq 2 -o $L2 -eq 3 ]
I want it to enter the loop only if L1 is equal to zero and one of the other criteria are filled, however it is entering at other times as well. What can i do to fix this? i tried seperating it like in matlab, but im not sure how to get it to correctly do what i am trying.
It's a matter of operator precedence: -a has higher p. than -o. So it's (expr1 AND expr2), OR expr3, OR expr4. You can overrule this using parentheses which, unfortunately, must be escaped in bash:
if [ "$L1" -eq 0 -a \( "$L2" -eq 1 -o "$L2" -eq 2 -o "$L2" -eq 3 \) ]; then echo "yes"; else echo "no"; fi