difference between = and ==


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting difference between = and ==
# 1  
Old 05-04-2010
difference between = and ==

Hi,

I don't understand the difference between

Code:
 
if [[ $string1 = $string2 ]] 
and
if [[ $string1 == $string2 ]]

for me

Code:
 
#!/usr/bin/ksh
string1=test1
string2=test2
if [[ $string1 == string2 ]];then OR if [[ $string1 = string2 ]];then 
echo "strings are same"
else
echo "strings are different"
fi

they both do the same job. Am I doing something wrong? Please explain.

-dips
# 2  
Old 05-04-2010
Quote:
Code:
 
if [[ $string1 = $string2 ]] 
and
if [[ $string1 == $string2 ]]

in first statement srting2 value is assigned to variable string1 and $string is true for all the case.
But 2nd statement its comparison between both the string.
Quote:
Code:
 
if [[ $string1 == string2 ]];then OR if [[ $string1 = string2 ]];then

-dips
This line it show the error.
# 3  
Old 05-04-2010
Quote:
if [[ $string1 == string2 ]];then OR if [[ $string1 = string2 ]];then
I erroneously posted that. What I meant was:
Code:
if [[ $string1 == $string2 ]];then OR if [[ $string1 = $string2 ]];then

-dips
# 4  
Old 05-04-2010
Quote:
Originally Posted by posix
.. in first statement srting2 value is assigned to variable string1 ..
Sorry this is not correct. Inside the brackets a single = is no declaration. It is the POSIX (I mean the standard, not the user Smilie ) version of == in other shells/tests and languages.


In this case = and == is the same, just a different way to write it.
# 5  
Old 05-04-2010
The == form is a syntax error in ksh.

Expressions in double square brackets are described in the Conditional Espressions section of the ksh manual.
Tests in single square brackets are described in "man test".
There is some overlap between the syntax of a Conditional Expression and a Test but they are also quite different when it comes to boolean logic.


In your script example the single square brackets test is preferred.

Code:
#!/usr/bin/ksh
string1=test1
string2=test2
if [ "${string1}" = "${string2}" ]
then
        echo "strings are same"
else
        echo "strings are different"
fi

# 6  
Old 05-05-2010
I came accross a link in this forum asking about the same question.
https://www.unix.com/unix-dummies-que...e-between.html

after reading it I tried to do pattern matching using wild-card (*) with == as below:


Code:
#!/usr/bin/ksh
string=unix_linux

if [[ $string == "unix*" ]];then (note: i tried with single quotes as well 'unix*')
echo "matches"
else
echo "not matches"
fi

but then too it echoed "not matches" What am I doing wrong? Is the pattern wrong? Please explain.
-dips
# 7  
Old 05-05-2010
The = or == is no partial pattern matching. It expects the exact pattern to be true. Maybe there is some special shell that works with wildcards, but afaik bash and ksh does not or the usual test tool available.
Maybe check that forum post again if they use another shell or special version of test etc.
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 calculate difference of split and sum the difference

In the awk I am trying to subtract the difference $3-$2 of each matching $4 before the first _ (underscore) and print that value in $13. I think the awk will do that, but added comments. What I am not sure off is how to add a line or lines that will add sum each matching $13 value and put it in... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. Shell Programming and Scripting

Get difference

Hi .. I am trying to create one function. It will have two arguments. Argument1: a,b,d,f,g Argument2:21212,sfsd,4546,67867,a,asda,b So the output will be Argument1 - Argument2 which is d,f,g Can anyone help with this one? (4 Replies)
Discussion started by: Anupam_Halder
4 Replies

3. Programming

what is the main difference between difference between using nonatomic lseek and O_APPEND

I think both write at the end of the file ...... but is there a sharp difference between those 2 instruction ..... thank you this is my 3rd question today forgive me :D (1 Reply)
Discussion started by: fwrlfo
1 Replies

4. UNIX for Dummies Questions & Answers

Difference between sh and ./

Hi All Can any body please tell me what is difference between sh scr ./scr Here scr is a script. (1 Reply)
Discussion started by: parthmittal2007
1 Replies

5. UNIX for Dummies Questions & Answers

Difference between

$x=10 and providing the spaces between = and 10 $x= 10 (4 Replies)
Discussion started by: shashank1311
4 Replies

6. Shell Programming and Scripting

Difference between 1,$ and /g

just wondering what the difference is between 1,$ and /g when doing a substitution in vi. doesn't seem to be much difference from what i can see. (2 Replies)
Discussion started by: bigubosu
2 Replies

7. UNIX for Advanced & Expert Users

difference

difference b/w shell scripting and perl scripting (2 Replies)
Discussion started by: simmijaswal
2 Replies

8. Shell Programming and Scripting

Difference between $* and $@

Somebody please tell me the difference between $@ and $* Thanks in advance. Saneesh Joseph (1 Reply)
Discussion started by: saneeshjose
1 Replies

9. Linux

what is the difference between -h and -H ?

samba:/home/backup # df -h /home/ Filesystem Size Used Avail Use% Mounted on /dev/sdb2 34G 8.6G 26G 26% /home samba:/home/backup # df -H /home/ Filesystem Size Used Avail Use% Mounted on /dev/sdb2 37GB 9.2GB 28GB 26% /home what... (2 Replies)
Discussion started by: cw1972
2 Replies

10. UNIX for Dummies Questions & Answers

Where is the difference?

Hello I would like to know where there is a difference between these two machines? HP9000-735/125 HP9000-B132L What does that all mean? Okay, HP= Hewlett Packard But 9000, 725/125, B132L ???? I am asking that question because I am about to buy one for myself, so I can have some fun... (3 Replies)
Discussion started by: Fwurm
3 Replies
Login or Register to Ask a Question