Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Array expansion interacts with brace expansion in the wrong order



On Fri, 14 Jul 2017 10:45:55 +0100
Peter Stephenson <p.stephenson@xxxxxxxxxxx> wrote:
> This might be worth saying explicitly --- though things like this are
> implicit throughout zsh's expansion rules.

I wonder if it's also worth expanding the following?  Having reread it
in the light of Anders' query I realised "in one step" might be a bit
misleading.  Other suggestions welcome.

I'm not, to be honest, quite sure what "in one step" really meant.
I think it meant the each command line argument was changed completely
before moving onto the next.  But even if it did, that's not
*quite* right if you consider that you might generate extra arguments
from an earlier step which then need processing themselves in left
to right order.  All in all, I think obscuring the fact that the
expansions happen one after the other is unhelpful, however we tackle
it.

pws

diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo
index d161b0b..5b26f36 100644
--- a/Doc/Zsh/expn.yo
+++ b/Doc/Zsh/expn.yo
@@ -21,9 +21,12 @@ xitem(em(Parameter Expansion))
 xitem(em(Command Substitution))
 xitem(em(Arithmetic Expansion))
 item(em(Brace Expansion))(
-These five are performed in one step in left-to-right fashion.  After
-these expansions, all unquoted occurrences of the characters `tt(\)',
-`tt(')' and `tt(")' are removed.
+These five are performed in left-to-right fashion.  On each argument,
+any of the five steps that are needed are performed one after the other.
+Hence, for example, all the parts of parameter expansion are completed
+before command substitution is started.  After these expansions, all
+unquoted occurrences of the characters `tt(\)',`tt(')' and `tt(")' are
+removed.
 )
 item(em(Filename Expansion))(
 If the tt(SH_FILE_EXPANSION) option is set, the order of expansion is



Messages sorted by: Reverse Date, Date, Thread, Author