The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Dummies Questions & Answers
Google UNIX.COM


UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !!

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
ksh: difference between $* and $@ JamesByars Shell Programming and Scripting 1 12-30-2007 06:08 AM
Difference between $* and $@ saneeshjose Shell Programming and Scripting 1 01-19-2006 04:03 AM
Difference between C and C++ hytechpro High Level Programming 2 11-29-2005 05:48 PM
difference rajashekaran UNIX for Advanced & Expert Users 1 04-22-2002 10:59 PM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 05-19-2006
Registered User
 

Join Date: May 2006
Posts: 32
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
difference between == and =

This is probably a stupid question to ask. But could somebody help me clearly distinguish the difference between these two operators in unix '==' and '='?
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 05-19-2006
Registered User
 

Join Date: Aug 2005
Location: Saskatchewan
Posts: 923
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
In unix what?
Reply With Quote
  #3 (permalink)  
Old 05-19-2006
Registered User
 

Join Date: May 2006
Posts: 32
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
may be i was not clear

excuse me if i did not clearly stated the prob. Consider this piece of code:

if( $3 == "R001" )
print "xxx";
else
print "yyy";
fi

my question is why can't I use the following instead of above:

if [[ $3 = "R001" ]]
print "xxx"
else
print "yyy"
fi

Also, is there is a difference in () and [[ ]] in above two examples?

Thanks
Reply With Quote
  #4 (permalink)  
Old 05-19-2006
Registered User
 

Join Date: Aug 2005
Location: Saskatchewan
Posts: 923
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
UNIX is an operating system, not a commandline. You seem to be talking about the standard UNIX shell, sh or one of it's clones like bash, but could have as easily been using something like korn... or even been programming in C.... = and == are pretty common.

I've never seen code like your first example, probably because it doesn't work. ( ) brackets aren't statement grouping, they define arrays!
Code:
arr=(a = c)
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
will print a, then =, then c. The = isn't even treated as an operator inside the ().

Inside the [[ ]] brackets, == is a pattern matching operator for strings, and = is a straight equality comparison. Outside of there, = is an assignment operator like variable="something" and I don't think == does anything.

Also, your if statements aren't quite right. Try this:

Code:
if [[ $this = "that" ]]
then
      echo "Something"
else
      echo "Something else"
fi

Last edited by Corona688; 05-19-2006 at 11:47 PM.
Reply With Quote
  #5 (permalink)  
Old 05-20-2006
reborg's Avatar
Administrator
 
Join Date: Mar 2005
Location: Ireland
Posts: 3,441
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
It appears that the difference is that one command is in a sh based shell and the other a csh based shell.
Reply With Quote
  #6 (permalink)  
Old 05-20-2006
Registered User
 

Join Date: May 2006
Posts: 32
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Question got some lead

Thanks both of you, for your replies. The examples that I cited were from ksh actually. I did come across some places and found out that == is equality operator used in arirthmatic operations (e.g. to compare two strings) whereas = is simply an assignment operator.

I guess I am still a little bit confused as far as the different brackets are concerned i.e. is my understand correct per following:

1. (commands...) - open a subshell and execute commands in that subshell ??
2. ((commands...)) - i have no idea about this one.

As far as [ $var1 -eq 0 ] and [[ $var1 -eq 0 ]] type of brackets are concerned, i guess they are equivalent and are used to test whether var1 is set to 0.

Thanks once again
Vikas
Reply With Quote
  #7 (permalink)  
Old 05-20-2006
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 3,289
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
[[ ]] must be used when there are multiple tests:
Code:
if [[ "$a" = "one"  && "$b" = "two ]]; then
    do something
fi
Reply With Quote
  #8 (permalink)  
Old 05-21-2006
reborg's Avatar
Administrator
 
Join Date: Mar 2005
Location: Ireland
Posts: 3,441
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Code:
if( $3 == "R001" )
        print "xxx";
      else
      print "yyy";
fi
This does not appear to make any sense to me as a ksh example, the test is not numerical and the syntax does not work. I'm pretty sure that it would give a shell error.
Reply With Quote
Google UNIX.COM
Reply

Thread Tools
Display Modes


The 50 most popular UNIX and Linux searches.
Google Search Cloud for The UNIX and Linux Forums
"inappropriate ioctl for device" 421 service not available, remote server has closed connection autosys awk trim bash eval bash exec bash for loop boot: cannot open kernel/sparcv9/unix close_wait command copy/move folder in unix curses.h cut command in unix dead.letter find grep find null character in a unix file grep multiple lines grep or grep recursive inaddr_any inappropriate ioctl for device logrotate.conf lynx javascript mailx attachment mget mtime ping port remove first character from string in k shell replace space by comma , perl script scp recursive segmentation fault(coredump) sftp batch sftp script snoop unix stale nfs file handle syn_sent tar exclude unix unix .profile unix com unix date command unix forum unix forums unix internals unix interview questions unix mtime unix simulator unix.com vi select all vi+substitute+end+of+line+character while loop within while loop shell script


All times are GMT -7. The time now is 11:18 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008 The CEP Blog All Rights Reserved -Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101