understanding {%/*}/


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers understanding {%/*}/
# 1  
Old 08-16-2010
understanding {%/*}/

Hi Gurus:
I am trying to understand the following line of code.I did enough of googling to understand but no luck.Please help me understand the follow chunk of code:

X=$0
MOD=${X%/*}/env.ksh

X is the current script from which I am trying to execute.

Say if X=test.ksh

$MOD is echoing : "test.ksh/env.ksh"

What I am trying to understand is,What exactly is {X%/*} doing.

Thanks in advance

Last edited by Scott; 08-16-2010 at 02:06 AM.. Reason: Moved from AIX forum
# 2  
Old 08-16-2010
Try running...

Code:
 >> ./test.ksh

You will find only ./env.ksh printed..{X%/*} seems to be chopping of a string that follows a '/' from $X.

if you run just 'test.ksh' you really dont have a '/' and hence you see test.ksh/env.ksh

Not sure why this was needed on your script...

Last edited by rajamadhavan; 08-16-2010 at 02:43 AM.. Reason: typo
# 3  
Old 08-16-2010
For example we run this
Code:
/home/ksh/test.ksh

X=$0
$0="/home/ksh/test.ksh"

X="/home/ksh/test.ksh"
MOD=${X%/*}/env.ksh

${X%/*} cut/delete from shortest `last slash and char group` from back of "/home/ksh/test.ksh"

that is "/test.ksh" so we cut "/test.ksh" string -->
% --> cut
/* --> slash and char group (string)
# 4  
Old 08-16-2010
Thanks Raja,ygemici.It really helped in understanding whats going on.
Raja,I am working on modifying a script.As part of it I am trying to understand the fucntionality of each function.
Code is trying to get an alternate configuration if specified from the command line ($1).If not use which is already existing using ($0).Below is the snippet:

Code:
 X=$0
   MOD="${X%/*}/env.ksh"
        
   if [ "$1" != "" ]; then
        MOD="${X%/*}/$1"
        if [ -f $MOD ]; then
           echo "Using override configuration file: [$MOD]"
        else
           echo "ERROR: Specified override configuration file [$MOD] was not found"
           MOD="${X%/*}/env.ksh"
           echo "Using default configuration file [$MOD]"
        fi
   fi

   cd `dirname $X`
   dir=`pwd`


   if [ -a $MOD ]; then
        echo "Common Environment Found.  Loading [$MOD]."
           SCRIPT_TYPE="WEB"
        . $MOD
        echo "Common Environment Load Complete."
   else
        echo "Common Environment NOT fond.  Aborting."
        exit -1
   fi

 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need your help in understanding this

Hi, I found this in a script and I would like to know how this works Code is here: # var1=PART1_PART2 # var2=${var1##*_} # echo $var2 PART2 I'm wondering how ##* makes the Shell to understand to pick up the last value from the given. (2 Replies)
Discussion started by: sathyaonnuix
2 Replies

2. UNIX for Dummies Questions & Answers

Understanding lseek

I tried to use lseek system call to determine the number of bytes in a file. To do so, I used open system call with O_APPEND flag to open a file. As lseek returns the current offset so I called lseek for opened file with offset as zero and whence as SEEK_CUR. So I guess it must return the number of... (3 Replies)
Discussion started by: Deepak Raj
3 Replies

3. Shell Programming and Scripting

Help with understanding of alias

Hi, I saw the following explanation about alias in bash from gnu website, but I didn't get the meaning: Bash always reads at least one complete line of input before executing any of the commands on that line. Aliases are expanded when a command is read, not when it is executed. Therefore, an... (3 Replies)
Discussion started by: Roy987
3 Replies

4. Shell Programming and Scripting

Help understanding the script

Hi Guys, I am new to scripting , I am trying to rebuild a script based on an old script. Can someone help me figure out what the script is doing? This is only a part of the script. I am looking to interpret these two points in the scripts:- 1) test=`echo $?` while I do not... (3 Replies)
Discussion started by: rajsan
3 Replies

5. Shell Programming and Scripting

Understanding a regex

Hi, Please help me to understand the bold segments in the below regex. Both are of same type whose meaning I am looking for. find . \( -iregex './\{6,10\}./src' \) -type d -maxdepth 2 Output: ./20111210.0/src In continuation to above: sed -e 's|./\(*.\{1,3\}\).*|\1|g' Output: ... (4 Replies)
Discussion started by: vibhor_agarwali
4 Replies

6. Shell Programming and Scripting

Understanding <<EOF

Hi all I stuck with a problem. I want to understand the execution of the below code. Can any one please help me `sqlplus username/passwd@DB << EOF set serveroutput on declare begin sql_query; end; / commit / quit EOF` My ques is why do we use EOF and how does it help. (4 Replies)
Discussion started by: parthmittal2007
4 Replies

7. Solaris

Understanding 'du' command

Hi I have a questions related 2 commands : 'du' and 'ls'. Why is the difference between output of 'du' and 'ls' cmd's ? Command 'du' : ------------------ jakubn@server1 /home/jakubn $ du -s * 4 engine.ksh 1331 scripts 'du -s *' ---> shows block count size on disk (512 Bytes... (5 Replies)
Discussion started by: presul
5 Replies

8. Shell Programming and Scripting

Need help for understanding of script

# sub: find block (in cols), return line-numbers (begin-end) or 0 if notfound sub findb{ my ($exp1,$col1,$exp2,$col2)= @_; # $exp = expression to find, $col - column to search in my $cnt=0; my ($val1,$val2); my ($beg,$end); for($cnt=1;$cnt<=65536;$cnt++){ $val1 =... (3 Replies)
Discussion started by: suvenduperl
3 Replies

9. Shell Programming and Scripting

need help understanding mv

I just started shell coding and I'm a bit confused on how 'mv' works can someone explain to me how it works and if i did this correctly. Thanks. echo "Enter Name of the first file:" read file1 #echo $file1 if ; then echo "Sorry, file does not exist." exit 1 ... (16 Replies)
Discussion started by: taiL
16 Replies
Login or Register to Ask a Question