Visit Our UNIX and Linux User Community


Problem in using AND OR condition together


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem in using AND OR condition together
# 1  
Old 08-20-2009
Problem in using AND OR condition together

a=rhino
b=crocodil
c=testsc
if [ [ "$a" = rhino || "$b" = crocodile ] && "$c" = testsc ]
then
echo "Test #5 succeeds."
else
echo "Test #5 fails."
fi

i need to test or condition before check the output with AND condition. ur help is much appreciated...
# 2  
Old 08-20-2009
Something Like this :

Code:
if [  "$a" = rhino -o  "$b" = crocodile  -a  "$c" = testsc ]
then
echo "Test #5 succeeds."
else
echo "Test #5 fails."
fi

# 3  
Old 08-20-2009
Same problem... tried using something like this

[ [ [ 0 = 0 ] -o [ 1 = 1] ] -a [ 0 = 0 ].

This gives a syntax error.

S
# 4  
Old 08-20-2009
Try this:

Code:
if ([ "$a" = rhino ] || [ "$b" = crocodile ]) && [ "$c" = testsc ]

# 5  
Old 08-20-2009
This should work. Note protecting the parentheses in the "if" statement, enclosing strings in double quotes, and using single square brackets. Note spelling "crocodile" the same way in $b !

Code:
#!/bin/ksh
a="rhino"
b="crocodile"
c="testsc"
if [ \( "$a" = "rhino" -o "$b" = "crocodile" \) -a "$c" = "testsc" ]
then
        echo "Test #5 succeeds."
else
        echo "Test #5 fails."
fi

# 6  
Old 08-21-2009
Thanks a ton!
Both of them worked.
I am really confused at the way [] and () works....
# 7  
Old 08-21-2009
Mine and franklin52 solutions look similar but are actually very different.

franklin52 is using a "regular expression" - see "man 5 regexp" (and "man" for your shell) within a sub-shell (enclosed by parentheses) and testing the success or failure with the "&&" operative before using a "test" for the right hand side of the and.

I am just using a "test" - see "man 1 test" (and "man" for your shell) with parentheses overriding the default execution order of the ands and ors. Similar to a mathematical function. The parentheses are escaped so they will be passed to "test" rather than being actioned by the shell.


Thus the use of parentheses is totally different syntax, but the use of single square brackets to enclose a condition is similar.

Previous Thread | Next Thread
Test Your Knowledge in Computers #773
Difficulty: Medium
A finite-state machine (FSM) is a specialized computer developed by AT&T.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Condition problem

Hi All, Seeking for your assistance on how to condition it correctly. cat file1.txt 290,1663,43,888,0,0.00,86.91,0.00,26.98,0.00 290,1663,52,0,0,0.00,0.00,0.00,0.00,0.00 290,1663,52,888,0,0.00,34.60,0.00,9.00,0.00 1st scenario: if the fourth column contains 888s and 0s it is by... (16 Replies)
Discussion started by: znesotomayor
16 Replies

2. Shell Programming and Scripting

If condition problem

Hi All, I am using below if condition to check whether null is passed as a parameter to the program if or ; then echo "ABC">>$FILE else echo "CDF">>$FILE fi However it is saying me null=null command not found . Please help me with this (9 Replies)
Discussion started by: Hypesslearner
9 Replies

3. Shell Programming and Scripting

Problem with IF condition .

Hi i am writing a script where i am running , 5 scripts together in 1 script . Now what i want is when these 5 scripts run completely , i should execute some other commands like i have compile the data etc. I have have 5 echo statements at the end of all those scripts . Like echo "1 is done" in... (1 Reply)
Discussion started by: honey26
1 Replies

4. Shell Programming and Scripting

If condition problem

Hi, I need to use if condition for search a file pattern on a particular location. cd $file_Path if || then do this else do that fi Can someone help me with the if part, how i can put those conditions? make sure format should be *.file* and *.file file is a keyword which i... (5 Replies)
Discussion started by: amit.mathur08
5 Replies

5. Shell Programming and Scripting

Problem in if condition

Hi all, I have task to delete two different files from all file system. one is core file & other is old file. i can delete core file but for old file i have to mv in different location. i wrote a script but it is not working. i have a two variables in this script first one is delcnt &... (6 Replies)
Discussion started by: dravi_laxmi
6 Replies

6. Shell Programming and Scripting

problem in if then else condition

Hi , I am trying the following simple script . But it is always giving 1 output. Dont know why #!/bin/sh find . -name "a.log" if ; then echo "1" else echo "0" fi Kindly advice. it is giving 1 output even when the a.log file is not there (26 Replies)
Discussion started by: himvat
26 Replies

7. Shell Programming and Scripting

problem in if condition

hi, actully i need the belp for the below. host_list=" Host1 host2 host3 host4 " n=`hostname` i need to put the condition like the below if n is among the host mention in the host_list if then #some stugg else # some other stuff fi (1 Reply)
Discussion started by: mail2sant
1 Replies

8. Shell Programming and Scripting

problem with if condition

hi, :) pls consider the following if statement if //g') ] then ........ else ....... when i execute the script i am getting the following error '(' unexpected I am not able to find the mistake. could anybody tell where i did mistake. cheers RRK (13 Replies)
Discussion started by: ravi raj kumar
13 Replies

9. Shell Programming and Scripting

If condition problem

Hi Guys, I want to use if conition for my script. Before I used it tried it with some small test scripts. But it was not succeeded. My script and screen output as follows, Script: echo 'Do you think Yes or No (y/n) : ' read ans echo You input anser as $ans ans1=y if ( $ans == $ans1... (5 Replies)
Discussion started by: maheshsri
5 Replies

Featured Tech Videos