Hi,

tricky!

But what is about:

${var##string}  
${var%string}
${var%%string

What means the double #, the single and double #?
Please explain me in some words! Thanks!
Is there a man page with this information?

regards,
hampel

Am Son, 2003-03-16 um 18.25 schrieb Robert P. J. Day:
> On Sun, 16 Mar 2003, Cowles, Steve wrote:
> 
> > > -----Original Message-----
> > > From: Kleiner Hampel
> > > Sent: Sunday, March 16, 2003 10:41 AM
> > > Subject: Re: shell script - expert question
> > > 
> > > 
> > > Hi,
> > > 
> > > now it works, but because of the '*'.
> > > 
> > > now i want to remove the leading abc from all files in my directory.
> > > i tried this:
> > > 
> > > for i in *; do mv $i `echo $i | sed s/abc//`; done
> > > 
> > > but it doesn't do that.
> > > i always get the error, that the last arguement must be a directory!
> > > I guess, the reason are the white spaces in the names.
> > > perhaps the expression `echo $i | sed s/abc//` also have to 
> > > be set in '' or so, but it doesn't work this way.
> > > 
> > > please help
> > 
> > Single quotes ' are treated literally by the shell interpreter. i.e. no
> > filename expansion. With double quotes, your variables are expanded prior to
> > being used. So...
> > 
> > for i in * ; do
> >     mv "$i" `echo "$i" | sed -e 's/abc//'`
> > done
> > 
> > Note: Your example has not dealt with filenames that do NOT contain spaces.
> 
> rather than going to the trouble of firing up "sed", you can use
> the pattern-matching operators built into the shell:
> 
>  ${var#string}                # discard shortest prefix matching "string"
> 
> as in,
> 
>  ${i#abc}
> 
> will return the string corresponding to the contents of $i,
> with a prefix of "abc" deleted.  if the prefix isn't "abc",
> no change.
> 
>   check out:
> 
>   ${var#string}
>   ${var##string}
>   
>   ${var%string}
>   ${var%%string
> 
> 
> rday
> 
> p.s.  just to clarify, you would do:
> 
>   mv "$i" "${i#abc}"
> 
> p.p.s.  note that "string" in all of the above can be a 
> wildcard pattern as well, making it really powerful.




-- 
redhat-list mailing list
unsubscribe mailto:[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/redhat-list

Reply via email to