![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| 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 !! |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Need help in checking the date and looking for a keyword in a script | tatchel | Shell Programming and Scripting | 0 | 04-21-2008 05:46 PM |
| how to search a keyword within a file using a for loop | lucho_1 | Shell Programming and Scripting | 6 | 03-10-2008 11:57 AM |
| keyword searching of documents | Miles | OS X (Apple) | 1 | 02-25-2008 03:38 PM |
| Far Keyword | svh | High Level Programming | 2 | 02-07-2006 09:16 PM |
| Keyword in perl | sarwan | Shell Programming and Scripting | 1 | 01-17-2006 01:35 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
Using $0 and 'Function' Keyword
Hi all,
I had a query on the usage of $0 in shells. I would appreciate any assistance in this. We moved from a sun solaris server to a linux server. I ran 2 different pieces on these servers and in one case, the outputs didnt change and in the other case, the outputs were different. The 2 pieces involved defining functions differently. Case #1 ---------------------------------- #!/bin/ksh echo "Value of $0 outside" function callme2 { echo "Value of $0 inside" } callme2 ---------------------------------- Case #2 ---------------------------------- #!/bin/ksh echo "Value of $0 outside" callme2() { echo "Value of $0 inside" } callme2 ---------------------------------- Sun solaris output was the same in both cases, as given below. Value of test.ksh outside Value of test.ksh inside But, the linux server gave different outputs. case #1 output Value of .//test.ksh outside Value of callme2 inside case #2 output Value of .//test.ksh outside Value of .//test.ksh inside Can someone assist me in understanding why these differences exist inspite of the shell remaining the same and also what can be done to prevent this from occurring. Thank you very much for your time...!! |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
It has to do with the shell behaviour...
Your first case (solaris...) is the what you would expect from a bourne shell... The second is what most ksh implementation would give... The question is when you call callme2, is it or not a $0 All the best |
|
#3
|
|||
|
|||
|
Thanks!
But, doesn't the command '#!/bin/ksh' invoke the korn shell? This was one of the reasons I was so surprised when the shell was giving different results on both servers. |
|
#4
|
|||
|
|||
|
but /bin/ksh wasnt the favorite shell under solaris (but is it now?)
You try your script on a HP-UX and Im sure you will have something like: Value of test.ksh outside Value of callme2 inside and if you used sh on HP-UX you would have the solaris output, unfortunately Im at home now and cant confirm by testing on different platforms.. but Im confident about HPUX... As said I believe it being more philosophical: When you call callme2, you agree its like executing a module no? So is it $0? It depends on your understanding I suppose... That is maybe also why many courses are given in bourne shell, question of compatibility... |
|||
| Google The UNIX and Linux Forums |