bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Expansion of ${!x*} and ${!x@}


From: Matthew Woehlke
Subject: Re: Expansion of ${!x*} and ${!x@}
Date: Tue, 07 Nov 2006 16:43:56 -0600
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Thunderbird/1.5.0.7 Mnenhy/0.7.4.0

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)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]