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 [email protected] +1-801-349-2682
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
