Difference between [condition] and [[condition]] and ((condition)) when used with if condition


 
Thread Tools Search this Thread
Operating Systems HP-UX Difference between [condition] and [[condition]] and ((condition)) when used with if condition
# 1  
Old 05-06-2011
Difference between [condition] and [[condition]] and ((condition)) when used with if condition

Executed the following if conditions .. and got different results .

only (( )) gave correct o/p with all scenarios .

Can anybody please let me know what is the difference between [condition] and [[condition]] and ((condition)) when used with if condition.

And why each condition gave different result.


1.

if [ 234 > 71 ];then
echo "correct"
else
echo "wrong"
fi

O/p : correct

2.

$if [[ 234 > 71 ]];then
echo "correct"
else
echo "wrong"
fi

o/p : wrong

3.

if [[ 234 > 700 ]];then
echo "correct"
else
echo "wrong"
fi

o/p : wrong

4.

if [ 234 > 700 ];then
echo "correct"
else
echo "wrong"
fi

o/p : correct

5.

$if (( 234 > 700 ));then
echo "correct"
else
echo "wrong"
fi

o/p : wrong


6.

if (( 234 > 71 ));then
echo "correct"
else
echo "wrong"
fi

o/p : correct
# 2  
Old 05-06-2011
inside [] or [[]] use -gt/-eq/-lt/etc... [[]] might be safe because it's built into the shell but you should use the proper operators.

inside (()) values will be treated as numeric. see also let


also - please use CODE tags around the logic.
# 3  
Old 05-06-2011
Within "man sh-posix" see the section on "Conditonal Expressions" for the explanation of conditions within [[ ]] .
See "man test" for an explanation of "Test" within [ ] .
Though there is some common syntax between a "Conditional Expression" and a "Test" there is also much syntax which is exclusive. For example the AND and OR operators are quite different.
As far as I know, there is no ">" operator.

I have never found use for (( )) as an Arithmetic Test and cannot comment. Others may have seen it used.


BEWARE. The ">" sign you are using is not valid syntax. Your test scripts may not be doing what you expect.
Quote:
if [ 234 > 71 ];then
echo "correct"
else
echo "wrong"
fi
The above script creates a FILE called "71" and the "if" test is "true" because this process worked.
Suggest you check all your examples for this problem and check the directory list after each try!

Last edited by methyl; 05-06-2011 at 02:10 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to update file with numerical difference if condition is met

In the file1 below if $9 and $12 are . (dot) then the value in $8 of file1 is used as a key (exact match) to lookup in each $2 of file2, when a match is found then the value of $4 in file1 is used to look for a range match within +/- 50 using the values in $4 and after in file2. The number of... (9 Replies)
Discussion started by: cmccabe
9 Replies

2. Shell Programming and Scripting

Using if condition

Hello, I want to use if condition in an expression as below: $ORACLE_HOME is a variable something like below /oraprod04_01/app/oracle/product/10204 Now here it is product/10204 I want to check if $ORACLE_HOME has something which has a string like /product/10* then one statement should... (4 Replies)
Discussion started by: Vishal_dba
4 Replies

3. Shell Programming and Scripting

If condition return 0 even when it fails to satisfy te condition

HI My doubt may be basic one but I need to get it clarified.. When i use "if" condition that checks for many AND, OR logical conditions like if ]; then return 0 fi Even the if condition fails it returns as zero.. Any clue.. But if i add else condition like if ]; ... (2 Replies)
Discussion started by: Priya Amaresh
2 Replies

4. Shell Programming and Scripting

if condition

if chr1:109457160 1 109457160 99.1735537190083 + chr1:109457233 1 109457233 99.1735537190083 - chr1:109457614 1 109457614 99.1735537190083 + chr1:109457618 1 109457618 100 + chr1:109457943 1 109457943 100 - chr1:109458224 1 109458224 99.1735537190083 - file1.txt If 6th column in... (3 Replies)
Discussion started by: johnkim0806
3 Replies

5. Shell Programming and Scripting

If condition

I am trying trying to find the percentage and compare it with a value. But even if the condition is not true the also it is taking the true value not the else value. x=`awk '{print $2}' out2.txt` y=`awk '{print $4}' out2.txt` z=$((100*$y/$x)) if ;then echo "high" else echo "low"... (2 Replies)
Discussion started by: arijitsaha
2 Replies

6. Shell Programming and Scripting

redirect stdout echo command in condition A run in condition B

hi, I have some problems in my simple script about the redirect echo stdout command inside a condition. Why is the echo command inside the elif still execute in the else command Here are my simple script After check on the two diff output the echo stdout redirect is present in two diff... (3 Replies)
Discussion started by: jao_madn
3 Replies

7. Shell Programming and Scripting

help with if condition

I do have a situation where , i need to zip the log files in the directory when the file exceeds more than 10MB. cd $ORACLE_HOME/network/log find . -type f -name "listener_*.log" > listeners Now i have all my *.log files listed in the listeners file So now i need to find the size of each... (5 Replies)
Discussion started by: naveen529
5 Replies

8. Shell Programming and Scripting

Use of condition with if...

hi all, I am writing a shell script in ksh.Scenerio is I am exporting a result set from teradata to a file and comparing its result with my assigend varaible.but this comaprison is not happening.I give my script here... set -x record=/tmp/error.txt count=/tmp/cnt.txt chmod 777 $count... (2 Replies)
Discussion started by: kapil chauhan
2 Replies

9. Shell Programming and Scripting

If condition

here is my script ######## #! /bin/sh export PATH=$PATH:/opt/mysql/bin/ #echo $PATH echo $LD_LIBRARY_PATH USER="root" PASS="xyz" DB="sme" DATE=$(date +%d%b%y_%k.%M.%S) #DATE=`date +%y-%d-%m` if mysqldump -u $USER -p$PASS $DB | gzip -9>/home/backup1/today_sme-$DATE.sql.gz then find... (10 Replies)
Discussion started by: kaushik02018
10 Replies

10. Shell Programming and Scripting

help with if condition.

Hi, awk -F"#" '{if ($19~/^1A/) print $0}' Please explain how "~/^1A/" is working. Thanks in advance.....:) (1 Reply)
Discussion started by: tushar_tus
1 Replies
Login or Register to Ask a Question