bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to understand echo ${PATH#*:}


From: Bob Proulx
Subject: Re: how to understand echo ${PATH#*:}
Date: Sun, 25 Dec 2011 21:41:23 -0700
User-agent: Mutt/1.5.21 (2010-09-15)

lina wrote:
> how to understand
> echo ${PATH#*:}
> 
> the #*:
> I don't get it. why the first path before : was gone.

This is really a help-bash question.  Please send all follow-ups
there.

The documentation says:

       ${parameter#word}
       ${parameter##word}
              Remove matching prefix pattern.  The word is expanded to produce
              a pattern just as in pathname expansion.  If the pattern matches
              the  beginning of the value of parameter, then the result of the
              expansion is the expanded value of parameter with  the  shortest
              matching  pattern  (the ``#'' case) or the longest matching pat-
              tern (the ``##'' case) deleted.  If parameter is  @  or  *,  the
              pattern  removal operation is applied to each positional parame-
              ter in turn, and the expansion is the resultant list.  If param-
              eter  is  an array variable subscripted with @ or *, the pattern
              removal operation is applied to each  member  of  the  array  in
              turn, and the expansion is the resultant list.

Since PATH is a series of directories separated by colons "#*:" will
match and therefore remove the first element of the PATH.

  $ foo=one:two:three
  $ echo ${foo#*:}
  two:three

And using two pound signs "##" would match the loggest pattern and
remove all up through the last one.

  $ echo ${foo##*:}
  three

Bob



reply via email to

[Prev in Thread] Current Thread [Next in Thread]