[Top][All Lists]

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

Re: No tilde expansion right after a quotation

From: Jon Seymour
Subject: Re: No tilde expansion right after a quotation
Date: Mon, 16 Feb 2009 11:59:10 +1100

$# is the number of position parameters in the current context, so it
will always have well defined value.

Technically, $? does not have a well-defined value if there hasn't
been a previously executed foreground pipeline but in practice seems
to have the value 0, so could be used too.

$@ wouldn't work if the positional parameters in the current context
happened to be empty as is easily demonstrated.

echo address@hidden -> empty
echo ${?+~jon} -> /home/jon
echo ${#+~jon} -> /home/jon


On Mon, Feb 16, 2009 at 11:49 AM, Angel Tsankov
<address@hidden> wrote:
> Paul Jarc wrote:
>> Jon Seymour <address@hidden> wrote:
>>> On Mon, Feb 16, 2009 at 10:22 AM, Paul Jarc <address@hidden> 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?
>> It's ${parameter+word}, using $# (which is always set) as the
>> parameter.
> How do you know that $# is always set?  And what about address@hidden  To 
> what values
> are these parameters set outside any function?
> A more appropriate parameter to use could be $? which, by pure logic, seems
> to be at least as often set as is $#.
> -Angel

reply via email to

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