Re: No tilde expansion right after a quotation

2009-02-16 Thread Eric Blake
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 According to Angel Tsankov on 2/16/2009 2:26 AM: There are some contexts, such as variable assignments, where double quotes are not necessary. foo=`echo a b` bar=`echo a b` only the setting of bar is guaranteed to parse correctly in all

Re: No tilde expansion right after a quotation

2009-02-16 Thread Chet Ramey
Eric Blake wrote: The portability bug I am referring to is the use of double-quoted back-ticks containing a double quote. Some (buggy) shells require you to use \ instead of inside backticks if the overall backtick expression is double-quoted. Hence this statement in Posix: Either of

Re: No tilde expansion right after a quotation

2009-02-15 Thread Chet Ramey
Angel Tsankov wrote: Hi, Using bash 3.2.48(1)-release, echo ~root prints ~root instead of /root. Is this the expected behaviour? Yes. The tilde is not the first character in the word. Portions of words to be tilde-expanded can't be quoted at all, either. Chet -- ``The lyf so short,

Re: No tilde expansion right after a quotation

2009-02-15 Thread Angel Tsankov
Chet Ramey wrote: Angel Tsankov wrote: Hi, Using bash 3.2.48(1)-release, echo ~root prints ~root instead of /root. Is this the expected behaviour? Yes. The tilde is not the first character in the word. Portions of words to be tilde-expanded can't be quoted at all, either. I see. I

Re: No tilde expansion right after a quotation

2009-02-15 Thread Jon Seymour
There may be other ways to do this, but: CPATH=${CPATH}${CPATH:+:}$(echo ~usr1/blah/blah) should work. jon. On Mon, Feb 16, 2009 at 9:02 AM, Angel Tsankov fn42...@fmi.uni-sofia.bg wrote: Chet Ramey wrote: Angel Tsankov wrote: Hi, Using bash 3.2.48(1)-release, echo ~root prints

Re: No tilde expansion right after a quotation

2009-02-15 Thread Angel Tsankov
Jon Seymour wrote: There may be other ways to do this, but: CPATH=${CPATH}${CPATH:+:}$(echo ~usr1/blah/blah) should work. Well, I'd like to avoid the use of external commands. --Angel

Re: No tilde expansion right after a quotation

2009-02-15 Thread Angel Tsankov
Jon Seymour wrote: If you are willing to trade conciseness in order to eliminate use of builtin commands, you can use. local tmp=~usr1/blah/blah CPATH=${CPATH}${CPATH:+:}${tmp} However, if you are concerned about echo failing, then you also need to be concerned about local failing.

Re: No tilde expansion right after a quotation

2009-02-15 Thread Paul Jarc
Jon Seymour jon.seym...@gmail.com wrote: If the builtin echo fails it will be because the bash interpreter has suffered a catastrophic failure of some kind [ e.g. run out of memory ]. Once that has happened, all bets are off anyway. Probably true, but command substitution forks a separate

Re: No tilde expansion right after a quotation

2009-02-15 Thread Jon Seymour
On Mon, Feb 16, 2009 at 10:22 AM, Paul Jarc p...@po.cwru.edu wrote: Jon Seymour jon.seym...@gmail.com wrote: If the builtin echo fails it will be because the bash interpreter has suffered a catastrophic failure of some kind [ e.g. run out of memory ]. Once that has happened, all bets are off

Re: No tilde expansion right after a quotation

2009-02-15 Thread Paul Jarc
Jon Seymour jon.seym...@gmail.com wrote: On Mon, Feb 16, 2009 at 10:22 AM, Paul Jarc p...@po.cwru.edu wrote: CPATH=${CPATH:+$CPATH:}${#+~usr1/blah/blah} Out of interest, how does one derive that outcome from the documented behaviour of bash? That is, which expansion rules are being invoked?

Re: No tilde expansion right after a quotation

2009-02-15 Thread Angel Tsankov
Jon Seymour wrote: On Mon, Feb 16, 2009 at 10:22 AM, Paul Jarc p...@po.cwru.edu wrote: Jon Seymour jon.seym...@gmail.com wrote: If the builtin echo fails it will be because the bash interpreter has suffered a catastrophic failure of some kind [ e.g. run out of memory ]. Once that has

Re: No tilde expansion right after a quotation

2009-02-15 Thread Paul Jarc
Angel Tsankov fn42...@fmi.uni-sofia.bg wrote: How do you know that $# is always set? And what about $...@? To what values are these parameters set outside any function? $# gives the number of positional parameters. If there aren't any positional parameters, then it's set to 0. In the man

Re: No tilde expansion right after a quotation

2009-02-15 Thread Paul Jarc
Jon Seymour jon.seym...@gmail.com wrote: The manual specifies a rule for ${parameter:+word}, but not ${parameter+word}. It's there, but easy to miss: In each of the cases below, word is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic

Re: No tilde expansion right after a quotation

2009-02-15 Thread Jon Seymour
On Mon, Feb 16, 2009 at 12:11 PM, Paul Jarc p...@po.cwru.edu wrote: Jon Seymour jon.seym...@gmail.com wrote: The manual specifies a rule for ${parameter:+word}, but not ${parameter+word}. It's there, but easy to miss: In each of the cases below, word is subject to tilde expansion,

Re: No tilde expansion right after a quotation

2009-02-15 Thread Eric Blake
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 According to Angel Tsankov on 2/15/2009 3:02 PM: I tried CPATH=${CPATH}${CPATH:+:}~usr1/blah/blah. (I quote expansions just to be on the safe side, though I think home directories may not contain spaces.) There are some contexts, such as