Multiple conditions inside my if statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Multiple conditions inside my if statement
# 1  
Old 08-29-2012
[Solved] Multiple conditions inside my if statement

Hello,
I am using shell scripting and I am recieving odd results from my if statement
Code:
     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.

Moderator's Comments:
Mod Comment Please view this code tag video for how to use code tags when posting code and data.
# 2  
Old 08-29-2012
That it because you should make the first if as a condition, then the others...
Code:
if  [ $L1 -eq 0  ]
then
     if [ $L2 -eq 1 -o $L2 -eq 2 -o $L2 -eq 3 ]
     then
          blah
          blah
    fi
fi

This User Gave Thanks to vbe For This Post:
# 3  
Old 08-29-2012
great that worked thank you!
# 4  
Old 08-29-2012
Try this...

Code:
#!/bin/bash

L1=0
L2=1

if [[ $L1 -eq 0 ]] && [[ $L2 -eq 1 || $L2 -eq 2 || $L2 -eq 3 ]]
then
    echo "True"
else
    echo "false"
fi

# 5  
Old 08-29-2012
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:
Code:
 if [ "$L1" -eq 0 -a \( "$L2" -eq 1 -o "$L2" -eq 2 -o "$L2" -eq 3 \) ]; then echo "yes"; else echo  "no"; fi

This will work as you expected.
# 6  
Old 08-29-2012
You can easily simplify that into one expression:
Code:
if [ "$L1" -eq 0 -a "$L2" -ge 1 -a "$L2" -le 3 ]

# 7  
Old 08-29-2012
And here is how I usually write it
Code:
if [ "$L1" -eq 0 ] && [ "$L2" -eq 1 -o "$L2" -eq 2 -o "$L2" -eq 3 ]; then ...

works in both sh and bash
Almost the same as @itkamaraj
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to Check Multiple conditions in IF statement?

I wish to check two conditions inside the if statement Condition 1: The two file contents should be identical // using cmp command for this. Condition 2: The two filenames should NOT be the same. This is what i did in vain. if ]; then where entry1 and entry2 are ls *.txt | while... (7 Replies)
Discussion started by: mohtashims
7 Replies

2. Shell Programming and Scripting

Multiple conditions inside if statement

I was trying to write multiple conditions inside the if statement but its not working. export VAR_NM=abc.txt export CURR_DT=20131011 export PREV_DT=20131012 if && then echo "Yes" else echo "NO" fi It should return Yes but returning NO always.Appreciate any help. (3 Replies)
Discussion started by: dr46014
3 Replies

3. UNIX for Dummies Questions & Answers

Multiple Find Conditions in IF Statement - UNIX

When I try the below if Condition with single condition its working fine. But when I try to Club both its working . But giving wrong results. In my case cond1 = -f ${filename1} = true cond2 = -f ${filename2} = true But Cond1 & Cond2 is resulting in False ??? Please advise ... (5 Replies)
Discussion started by: Shiny_Reddy
5 Replies

4. Shell Programming and Scripting

Multiple Conditions Perl if Statement

Hello, I'm trying to put together a script that involves pulling data from a config file. I'm attempting to write an if statement to validate one of the pieces of data from the config file, but I think I'm fat fingering it somehow. $config{VALUE} is being pulled from a config file but can only... (4 Replies)
Discussion started by: Picch
4 Replies

5. Shell Programming and Scripting

Multiple conditions in a CASE statement

is it possible to use multiple conditions in a CASE statement? And if so, what is the syntax? I'm trying to use one but can't seem to get it right. I want the statement to be CASE $vendor OR $alias condition 1) statements; condition 2) statements; etc. esac but I keep... (25 Replies)
Discussion started by: Straitsfan
25 Replies

6. Shell Programming and Scripting

multiple lines inside a case statement

echo "please enter ur choice.. 1. Make a file. 2. Display contents 3. Copy the file 4. Rename the file 5. Delete the file 6. Exit" read choice case $choice in 1 ) echo enter the file name read fname if then echo... (2 Replies)
Discussion started by: gotam
2 Replies

7. Shell Programming and Scripting

If statement with multiple conditions

I have a script that runs on multiple servers. What I want to do is have the script do the following: if $(hostname) is equal to server or server2 then TO_DIR=go else TO_DIR=stop fi I have tried: if if ] Server is hpux. any ideas? (1 Reply)
Discussion started by: cpolikowsky
1 Replies

8. UNIX for Dummies Questions & Answers

Two conditions in one if statement

I'm totally new with bash programming and I don't get it how to put two conditions in one if statement. My code looks like this: h=`date +%k` if && ]; then$h is 10 but I don't get into my if statement. What's wrong here? (5 Replies)
Discussion started by: borobudur
5 Replies

9. Shell Programming and Scripting

if statement with two conditions

Hi, I am trying to use && set up to match two conditions within ksh: if && then '''Do something if somehow, I keep getting error message telling me that ] is missing. What's wrong with my code? Thanks a lot for your help! (1 Reply)
Discussion started by: cin2000
1 Replies
Login or Register to Ask a Question