[plug] string manipulation

Bernd Felsche bernie at innovative.iinet.net.au
Sat Apr 22 15:26:35 WST 2006


Craig Dyke <grail at westnet.com.au> writes:

>I am looking for two answers here:

>1. Is there a better way than what I will show below?

There is always a better way. It's in the decimation of the baked
confection.

>2. How is what I am doing wrong as I have to split operation into two 
>(will show what I mean)?

>Currently:

>I have written a script which uses find to set a variable --> var=`find 
>/ -name $what_i_am_looking_for`

This find may set sveral results into the same variable: A list.

>The what_i_am_looking_for variable is et earlier and is the name of a 
>directory on my system.

>My task is to set a new variable equal to the name of the parent 
>directory to what I have found.

>This is what works at the mo:   temp=${what_i_am_looking_for%/*}
>                                              newVar=${temp##*/}

>What I was trying to do was combine both:   
>newVar=${${what_i_am_looking_for%/*}##*/}

Try a nested dirname. That'll also work if the file is in the root
directory.

for ff in $var ; do
  parent=`dirname \`dirname $ff\``
  # do stuff in the $parent 
done

Your bashrc probably contains a (debugged) function definiton for
"dirname" so it won't fork as often as it would for these things.
If you feel like it, define your own say "parentname" function,
building on "dirname" so that you won't have to use the "ugly"
escape above.
-- 
/"\ Bernd Felsche - Innovative Reckoning, Perth, Western Australia
\ /  ASCII ribbon campaign | "Laws do not persuade just because
 X   against HTML mail     |  they threaten."
/ \  and postings          | Lucius Annaeus Seneca, c. 4BC - 65AD.




More information about the plug mailing list