What does this code mean...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting What does this code mean...
# 1  
Old 08-12-2006
What does this code mean...

Hi,

I am new to unix and want to know what does the below code does in bash shell script...

ScriptCMD=$0
cd ${ScriptCMD%/*}
ScriptPath=`pwd`
ScriptName=${ScriptCMD##*/}
ScriptNoExtName=${ScriptName%.*}

Please explain me what are the values of the above five variables.
Also I would be very thankfull if you can provide good documentation on these concepts.

Help in this regard is highly appreciated.

Regards,
Azaz Ali.
# 2  
Old 08-12-2006
Assume the script was called by :
Code:
$ /home/user/script.ksh

ScriptCMD=$0
The special variable $0 contains the name of the script specidied on the command line.
ScriptCMD=/home/user/script.ksh

cd ${ScriptCMD%/*}
The syntax ${var%pattern} substitute the variable $var and remove the smallest trailing part matching the pattern.
${ScriptCMD%/*}=/home/user

ScriptPath=`pwd`
Get the full script directory full path
ScriptPath=/home/user

ScriptName=${ScriptCMD##*/}
The syntax ${var##pattern} substitute the variable $var and remove the longuest leading part matching the pattern at the .
ScriptName=script.ksh

ScriptNoExtName=${ScriptName%.*}
ScriptNoExtName=script


I think that there is a little bug when setting the script path if the script path is not specied on the command line but found in the PATH by the shell.

Assume:
Code:
$ echo $PATH
....:/home/user/bin:...
$ cd /home/user
$ script.ksh          # the script is located in /home/user/bin

The execution of the script gives
ScriptCMD=$0 -> script.ksh
cd ${ScriptCMD%/*} -> cd script.ksh -> Execution ERROR
ScriptPath=`pwd` -> /home/user -> Invalid value !
ScriptName=${ScriptCMD##*/} -> script.ksh
ScriptNoExtName=${ScriptName%.*} -> script



Jean-Pierre.
# 3  
Old 08-13-2006
Thank you very much....

Hi Jean,

Thank you very much for your detail explanation.

Regards,
Azaz Ali.
Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. Linux

Go to a line of code , skip few lines of code

Hi , I have a code where i am using a infinite while loop . some thing like below while do if then #go to line 20 fi command 1; command 2; #line 20: sleep 34; (5 Replies)
Discussion started by: Paarth
5 Replies

2. Shell Programming and Scripting

Block of code replacement in Java source code through Unix script

Hi, I want to remove the following code from Source files (or replace the code with empty.) from all the source files in given directory. finally { if (null != hibernateSession && hibernateSession.isOpen()) { //hibernateSession.close(); } } It would be great if the script has... (2 Replies)
Discussion started by: hareeshram
2 Replies

3. UNIX for Dummies Questions & Answers

If ‘922’ Code does not exist on ‘03’ Record, ‘901’ Code will be there instead, move ‘03’ R

01,011600033,011600033,110516,0834,2,90,,2/ 02,011600033,011103093,1,110317,0834,,2/ 03,105581,,015,+00000416418,,,901,+00000000148,,,922,+000000 00354,,/ 03,113806,,015,+00000559618,,,901,+00000000096,,,922,+000000 00621,,/ 88,902,+0000000025218,,/... (1 Reply)
Discussion started by: sgoud
1 Replies

4. Shell Programming and Scripting

translate ksh code to csh code

hi all, Can any 1 help me translate this korn shell code to C shell code : email=$(grep "^$1" $folder/config_2.txt | awk '{print $2'}) In config_2.txt the content is : which mean in korn shell , $1=groupname and $2=email address. Now i need to write in C shell script,when i set the... (2 Replies)
Discussion started by: proghack
2 Replies

5. Programming

how i prepare a c++ code(c code) for implementing my own protocol format

helo my protocol format is given below { destno,mode,no.of packet,pktsize,,pktno,textsize,CRC} description:- { is starting flag destno - 4bytes mode - 1 byte no.of pkt - 4byes pktsize - 6 bytes ... (1 Reply)
Discussion started by: amitpansuria
1 Replies

6. UNIX for Advanced & Expert Users

Return code from PL/SQL Code

Hi Guys, I was just wondering if anybody can help me with this problem. OK, how we can get a value back from PL/SQL Script (not stored procedure/function) See the below example: (for example aaa.sh) #!/bin/ksh VALUE=`sqlplus -s user/password@test_id <<EOF @xxx.sq EOF` echo $VALUE ... (7 Replies)
Discussion started by: Shaz
7 Replies
Login or Register to Ask a Question