Visit Our UNIX and Linux User Community


How to use logical operators in multiple if statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to use logical operators in multiple if statement
# 1  
Old 06-07-2011
How to use logical operators in multiple if statement

Hi
I want to send a status mail if daily or weekly or monthly batch completed or aborted. Here is the code.

Code:
if [ "$BatchFrequency" = "Daily" ] && [ "$ModuleBusinessName" = "XYZ" ] && 
[ "$Status" = "COMPLETED SUCESSFULLY" ]  || [ "$Status" = "ABORTED" ]  

Else if  [ "$BatchFrequency" = "Weekly" ] && [ "$ModuleBusinessName" = "ABC" ] 
&& [ "$Status" = "COMP LETED SUCESSFULLY" ]  || [ "$Status" = "ABORTED" ]  

Else if  [ "$BatchFrequency" = "Monthly" ] && [ "$ModuleBusinessN ame" = "PQR" ] 
&& [ $Status" = "COMPLETED SUCESSFULLY" ] || [ "$Status" = "ABORTED" ] 
then
mailx –s “Status Report” sumone@sumthing.com 
else 
print  ”try again”

Plz suggest the changes.

Last edited by Franklin52; 06-07-2011 at 07:21 AM.. Reason: Please use code tags
# 2  
Old 06-07-2011
Code:
for AND (&&) use --> "-a" option
for OR (||) use --> "-o" option
eg.,
if [ "$BatchFrequency" = "Daily" -a "$ModuleBusinessName" = "XYZ" -a "$Status" = "COMPLETED SUCESSFULLY" -o "$Status" = "ABORTED" ] 

i think, this might help you.


Last edited by Franklin52; 06-07-2011 at 07:21 AM.. Reason: Please use code tags, thank you
# 3  
Old 06-07-2011
The logical AND and OR conditions will remain same. Use "elif" in place of "Else if" and after the final else with the associated statement end the if block with "fi" .

Eg:


Code:
if [ $int1 = $int2 ]
then
       echo "int1 is equal to int2"
elif [ $int1 > $int2 ]
then
       echo "int1 is greater than int2"
else
     echo "int1 is smaller than int2"
fi

Alternative Way:

is equal to: eq
is not equal to: ne
is greater than: gt
is less than: lt
is greater than or equal to: ge
is less than or equal to: le

-a is same as using &&
-o is same as using ||

Note: Padding of space is mandatory before using '[' and ']'

Thank you.

Last edited by Franklin52; 06-07-2011 at 07:21 AM.. Reason: Please use code tags, thank you
# 4  
Old 06-07-2011
Place the mail part script in a function and try for checking the conditions..
And if your using double square brackets then use && or || , for single square bracket you can use -a or -o
Code:
 #!/bin/ksh
func_mail()
{
 mailx -s “Status Report” sumone@sumthing.com 
}
 
if [[ "$BatchFrequency" = "Daily" && "$ModuleBusinessName" = "XYZ" && "$Status" = "COMPLETED SUCESSFULLY" || "$Status" = "ABORTED"  ]]
then
        func_mail
elsif [[ "$BatchFrequency" = "Weekly" && "$ModuleBusinessName" = "ABC" && "$Status" = "COMPLETED SUCESSFULLY" ||"$Status" = "ABORTED" ]]
then
       func_mail
elsif [[ "$BatchFrequency" = "Monthly" && "$ModuleBusinessName" = "YUI" && "$Status" = "COMPLETED SUCESSFULLY" ||"$Status" = "ABORTED" ]]
then
       func_mail
else
       echo "Try again"
fi


Previous Thread | Next Thread
Test Your Knowledge in Computers #908
Difficulty: Medium
If a Unix shell command line ends with the hashtag #, then the job runs in the background, and the shell does not wait for the job to terminate before printing the prompt and waiting for the next command line.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to apply the update statement in multiple servers on multiple dbs at a time .?

Hi , Can any please help the below requirement on all multiple servers and multiple dbs. update configuration set value='yes' ;1) the above statement apply on 31 Databases at a time on different Ip address eg : 10.104.1.12 (unix ip address ) the above ip box contains 4 db's eg : db... (2 Replies)
Discussion started by: venkat918
2 Replies

2. Shell Programming and Scripting

Implementing operators on multiple fields

Hallo Friends, Have a look at my script: awk -F',' '$14==9100' *_201304*.csv|wc -l > pax1; awk -F',' '$14==9101' *_201304*.csv|wc -l >>pax1; awk -F',' '$14==9102' *_201304*.csv|wc -l >>pax1; awk -F',' '$14==9103' *_201304*.csv|wc -l >>pax1 I would like to include field 42. like below ... (9 Replies)
Discussion started by: kekanap
9 Replies

3. Shell Programming and Scripting

Using Logical Expression in an AWK statement

I'm would to create a script that would give me the results below. Please note the spaces in the log file are actually commas(",".) Log file Data 0:00 21:15 899 43 31 12 25.39 0:00 21:20 736 34 19 15 35.39 0:00 21:20 776 41 28 13 ... (3 Replies)
Discussion started by: ravzter
3 Replies

4. Shell Programming and Scripting

ksh Multiple Pattern Matching Operators

I figured this would be simple, but I am stuck. Variable longpath="/dir1/dir2/dir3/filename.stuff.morestuff.garbage" I want to end up with just "filename.extra.moreextra". So, I want to get rid of the path and .garbage I want to do this with just ksh internals. So, no sed,grep,awk,expr,... (4 Replies)
Discussion started by: Topaz
4 Replies

5. UNIX for Dummies Questions & Answers

issue with multiple logical operators

Hi, shell is /bin/ksh I am trying to do the following in my code.. but its showing me an error if ] && ] ]]; then echo "id is $ida and chk_dy is $chk_dy" fi the error I get is syntax error at line 23 : `"$ida"' unexpected I need to execute the... (2 Replies)
Discussion started by: nss280
2 Replies

6. Shell Programming and Scripting

Can you use logical operators in a case statement (bash)?

I'm pretty sure I already know the answer to this, but I want to make sure I'm not overlooking anything. I'm working on a log monitoring script and every 10 lines I want to display a summary of events. The thing is, there are a lot of possible events, that likely won't have happened, so I only want... (0 Replies)
Discussion started by: DeCoTwc
0 Replies

7. Shell Programming and Scripting

And and OR Operators with If Statement.

Hi All, I have 2 variables. Result1 and Result2. I want to put a condition that if Both are True then echo "All True" Else Show Error. Right now i am doing this and getting error. if ; then echo "All True" else echo "Failed" fi; Error. line 8: ' Solution: Looking for (2 Replies)
Discussion started by: mkashif
2 Replies

8. Shell Programming and Scripting

Multiple Logical Operator Issues ...

Hi folks I have a snippet of code Which is like this If ( ( A || B || C ) && D ) then Do some thing.... elif exit fi How to rephrase this and use it so I dont get any Errors ... Looking out for helpful replies .. Thanks & Regards Srikanth GR (1 Reply)
Discussion started by: srikanthgr1
1 Replies

9. Shell Programming and Scripting

Logical AND within a case statement ??

Hi there, probably a really simple question to answer but i cant seem to find it can I use a logical AND (&&) within a CASE statement ie (ps this is useless syntax but youll get the idea case "$var1","$var2" in 'Billy' && 'Bobby') ... (1 Reply)
Discussion started by: hcclnoodles
1 Replies

10. UNIX for Dummies Questions & Answers

multiple Logical statement

hi I have following if condition line_by_line="0000000000000tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt" if then echo "Exclusion criteria" else echo "Not exclusion criteria" fi above condition works perfectley but if i add one more logical condition... (3 Replies)
Discussion started by: mahabunta
3 Replies

Featured Tech Videos