[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bash-bug
Subject:    Re: Expansion of ${!x*} and ${!x@}
From:       Matthew Woehlke <mw_triad () users ! sourceforge ! net>
Date:       2006-11-07 22:43:56
Message-ID: eir27c$mv6$1 () sea ! gmane ! org
[Download RAW message or body]

Linda Walsh wrote:
> The manpages for "my" bash's (3.1.11 on Linux and 3.1.17 on cygwin/i686),
> under Parameter Expansion, say:
> 
> 
>     ${!prefix*}
>     ${!prefix@}
>        Expands to the names of variables whose names begin with prefix,
>        separated by the first character of the IFS special variable.
> 
> [snip]
> output:
>    *  = UID USER                  # (line 1)
>    @  = UID USER                  # (line 2)
>   "*" = UID<USER                  # (line 3)
>   "@" = UID USER                  # (line 4)
> ---
> 
> QUESTIONS continued...
> - If the two forms are supposed to be identical, why aren't lines
>   3 & 4 the same?
> - Why do the quotes in line 3 make for different output than in line
> Why aren't the 4 lines identical?

I would assume that this works the same as other uses of * and @; if you 
quote them, * expands to a single Word, while @ expands to a Word for 
each logical element (so that any spaces in each element are preserved). 
Similar to how if your argv is 'foo' 'bar none', "$*" gives the single 
Word 'foo bar none' and "$@" gives { 'foo', 'bar none' }.

IOW this looks like the doc maybe should mention this and fails to do so.

-- 
Matthew
"Try to bring it back in one piece this time." -- Q (MI6)




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic