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}. -- Eric Blake ebl...@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature