Expanding an undefined array

2008-09-24 Thread Bernd Eggink

Is the following difference intentional, a bug, or do I miss something?

  unset a
  set -- [EMAIL PROTECTED]
  echo $#

Output: 0

  typeset a
  set -- [EMAIL PROTECTED]
  echo $#

Output: 1

The man page says, If the word is double-quoted, ... [EMAIL PROTECTED] expands 
each element of name to a separate word. When there are no array 
members, [EMAIL PROTECTED] expands  to  nothing. It doesn't mention a 
difference between an empty and an unset variable in this context. As a 
quoted 'nothing' normally counts 1 word, the 'nothing' in the first 
example appears to be some kind of 'super-nothing'.


Regards,
Bernd

--
Bernd Eggink
[EMAIL PROTECTED]
http://sudrala.de




Re: Expanding an undefined array

2008-09-24 Thread Chet Ramey
Bernd Eggink wrote:
 Is the following difference intentional, a bug, or do I miss something?
 
   unset a
   set -- [EMAIL PROTECTED]
   echo $#
 
 Output: 0

This is correct.

   typeset a
   set -- [EMAIL PROTECTED]
   echo $#
 
 Output: 1

The question is how to treat the variable created by `typeset'.  Bash
has traditionally treated `typeset a' as equivalent to `typeset a='
instead of creating a `placeholder' variable that exists in a sort of
limbo.  That's different from things like `export a' or `readonly a',
and probably inconsistent enough to be worth changing for bash-4.0.
That's the difference between the examples, not the expansion of
[EMAIL PROTECTED].

Chet

Chet
 
 The man page says, If the word is double-quoted, ... [EMAIL PROTECTED] 
 expands
 each element of name to a separate word. When there are no array
 members, [EMAIL PROTECTED] expands  to  nothing. It doesn't mention a
 difference between an empty and an unset variable in this context. As a
 quoted 'nothing' normally counts 1 word, the 'nothing' in the first
 example appears to be some kind of 'super-nothing'.
 
 Regards,
 Bernd
 


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer

Chet Ramey, ITS, CWRU[EMAIL PROTECTED]http://cnswww.cns.cwru.edu/~chet/