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/