On Sat, 2008-07-05 at 13:31:20 -0700, Russ Allbery wrote: > Clint Adams <schizo@debian.org> writes: > > > I observe that > > > > a) POSIX specifies the behavior of 'export' and 'readonly' > > b) Implementation of 'local' is often very similar to 'export' and 'readonly' > > and in the absence of a standardized 'local', it makes sense to > > specify a similar form. > > c) 'export' and 'readonly' both take multiple variables as arguments, > > assignments, and the -p switch for printing > > d) the Bourne-type shells in Debian support multiple arguments to 'local' > > e) the Bourne-type shells in Debian (except for posh) support variable > > assignments with 'local' > > f) some of the Bourne-type shells in Debian produce output (which is not > > necessarily useful) in response to 'local -p', and some produce an > > error > > g) bash disallows use of 'local' outside of a shell function > > > > I suggest that Policy be amended to require that > > > > local a b c=delta e > > > > scope variables a, b, c, and e as local, and assign the > > string "delta" to the local c. > > Here is a proposed patch that implements Clint's suggestion. Seconds? > > diff --git a/policy.sgml b/policy.sgml > index c9bd84f..2bc0d93 100644 > --- a/policy.sgml > +++ b/policy.sgml > @@ -7040,18 +7040,19 @@ strip --strip-unneeded <var>your-lib</var> > support <tt>-a</tt> and <tt>-o</tt> as binary logical > operators.</item> > <item><tt>local</tt> to create a scoped variable must be > - supported; however, <tt>local</tt> may or may not preserve > - the variable value from an outer scope and may or may not > - support arguments more complex than simple variables. Only > - uses such as: > + supported, including listing multiple variables in a single > + local command and assigning a value to a variable at the > + same time as localizing it. <tt>local</tt> may or > + may not preserve the variable value from an outer scope if > + no assignment is present. Uses such as: > <example compact> > fname () { > - local a > - a='' > - # ... use a ... > + local a b c=delta d > + # ... use a, b, c, d ... > } > </example> > - must be supported. > + must be supported and must set the value of <tt>c</tt> to > + <tt>delta</tt>. > </item> > </list> > If a shell script requires non-SUSv3 features from the shell Seconded. regards, guillem
Attachment:
signature.asc
Description: Digital signature