On 5/5/11 10:45 AM, Eric Blake wrote:
> On 05/05/2011 08:43 AM, Chet Ramey wrote:
>>> "The parameter name or symbol can be enclosed in braces, which are
>>> optional except for positional parameters with more than one digit or
>>> when parameter is followed by a character that could be interpreted as
>>> part of the name."
>>
>> I agree with this interpretation, but the following sentence can be
>> interpreted as placing the burden on the shell programmer:
>>
>> "When a positional parameter with more than one digit is specified, the
>> application shall enclose the digits in braces (see Parameter Expansion)."
>>
>> Still, sh has required the braces since time immemorial.  It makes no
>> sense that ash would have done it differently
> 
> Additionally from POSIX:
> 
> "If the parameter name or symbol is not enclosed in braces, the
> expansion shall use the longest valid name (see XBD Name)"
> 
> Then XBD Name:
> "In the shell command language, a word consisting solely of underscores,
> digits, and alphabetics from the portable character set. The first
> character of a name is not a digit."
> 
> In "$10", 10 is not a name, so the longest name after $ is the empty
> string, and in place of a name, we use the single-character symbol 1
> instead, such that this MUST be parsed as ${1}0, not as ${10}.

Turn and face the congregation, Reverend. :-) I'm not the one you have to
convince.

Chet


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    c...@case.edu    http://cnswww.cns.cwru.edu/~chet/

Reply via email to