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

Re: no-fork expansion with array var



On Fri, Sep 22, 2023 at 4:16 PM Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
>
> On Fri, Sep 22, 2023, 4:00 PM Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
>>
>> The documentation says:
>>   If param names an array, array expansion rules apply.
>>
>> But what it means is if you do an array assignment to var inside the
>> code block, array expansion rules apply

How about this?

diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo
index 86a5f70c8..837a85db6 100644
--- a/Doc/Zsh/expn.yo
+++ b/Doc/Zsh/expn.yo
@@ -1915,8 +1915,9 @@ Substitutions of the form
`tt(${|)var(param)tt(|)...tt(})' are similar,
 except that the substitution is replaced by the value of the parameter
 named by var(param).  No implicit save or restore applies to var(param)
 except as noted for tt(REPLY), and var(param) should em(not) be declared
-within the command.  If var(param) names an array, array expansion rules
-apply.
+within the command.  If, after evaluating the expression, var(param)
+names an array, array expansion rules apply.  However, tt(REPLY) is
+always expanded in scalar context, even if assigned an array.

 A command enclosed in braces preceded by a dollar sign, and set off from
 the braces by whitespace, like `tt(${ )...tt( })', is replaced by its




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