mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-05-19 11:11:31 +02:00
52865: Documentation update for 52864
This commit is contained in:
parent
76019f7174
commit
49c6978dbb
4 changed files with 23 additions and 17 deletions
|
@ -1,5 +1,8 @@
|
|||
2024-04-01 Bart Schaefer <schaefer@zsh.org>
|
||||
|
||||
* 52865: Doc/Zsh/expn.yo, Doc/Zsh/params.yo, Etc/FAQ.yo:
|
||||
Documentation update for 52864
|
||||
|
||||
* 52864: Src/lex.c, Src/subst.c, Test/D10nofork.ztst,
|
||||
Test/V10private.ztst: Change ${|var|...} to ${{var} ...},
|
||||
limit local REPLY behavior to ${|...}, update tests.
|
||||
|
|
|
@ -1937,13 +1937,14 @@ split on tt(IFS) unless the tt(SH_WORD_SPLIT) option is set.
|
|||
cindex(substitution, command, current shell)
|
||||
cindex(substitution, command, non forking)
|
||||
cindex(substitution, nofork)
|
||||
Substitutions of the form `tt(${|)var(param)tt(|)...tt(})' are similar,
|
||||
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, 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.
|
||||
and var(param) should em(not) be declared within the command. No space
|
||||
is allowed within `tt(${{)' and space or newline is required after
|
||||
`tt({)var(param)tt(})'. The var(param) may include a subscript, and if,
|
||||
after evaluating the expression, var(param) names an array, then array
|
||||
expansion rules apply to the final substitution.
|
||||
|
||||
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
|
||||
|
@ -1954,7 +1955,7 @@ Word splitting does not apply unless tt(SH_WORD_SPLIT) is set, but a
|
|||
single trailing newline is stripped unless the substitution is enclosed
|
||||
in double quotes.
|
||||
|
||||
Note that because the `tt(${|)...tt(})' and `tt(${ )...tt( })' forms
|
||||
Note that because `tt(${|)...tt(})' and the two related substitutions
|
||||
must be parsed at once as both string tokens and commands, all other
|
||||
braces (`tt({)' or `tt(})') within the command either must be quoted,
|
||||
or must appear in syntactically valid pairs, such as around complex
|
||||
|
|
|
@ -1032,8 +1032,8 @@ the shell.
|
|||
)
|
||||
item(tt(cmdsubst))(
|
||||
Command substitution using of the tt(`)var(...)tt(`),
|
||||
tt($+LPAR())var(...)tt(RPAR()), tt(${ )var(...)tt( }) or
|
||||
tt(${|)var(...)tt(}) constructs.
|
||||
tt($+LPAR())var(...)tt(RPAR()),tt(${{)var(name)tt(}) var(...)tt(}),
|
||||
tt(${|)var(...)tt(}), or tt(${ )var(...)tt( }) constructs.
|
||||
)
|
||||
item(tt(equalsubst))(
|
||||
The tt(=+LPAR())var(...)tt(RPAR()) form of process substitution.
|
||||
|
|
20
Etc/FAQ.yo
20
Etc/FAQ.yo
|
@ -1047,15 +1047,18 @@ label(211)
|
|||
)
|
||||
Runs code in the current shell context and then substitutes mytt(${REPLY}).
|
||||
The result is not split into words unless the tt(SH_WORD_SPLIT) option
|
||||
is set, for example by mytt(${=${| code }}).
|
||||
is set, for example by mytt(${=${| code }}). mytt($REPLY) is a local
|
||||
parameter within the substitution so its value in the surrounding scope
|
||||
is not changed.
|
||||
|
||||
eit() An extension to #1
|
||||
verb(
|
||||
${|var| code }
|
||||
${{var} code }
|
||||
)
|
||||
Runs code in the current shell and then substitutes mytt(${var}). If
|
||||
mytt(${var}) names an array, the result is an array of those elements,
|
||||
but no further splitting is done without tt(SH_WORD_SPLIT).
|
||||
but no further splitting is done without tt(SH_WORD_SPLIT). mytt(${var})
|
||||
is myem(not) local to the substitution.
|
||||
|
||||
eit() The traditional ksh form, except that the closing mytt(;)
|
||||
may usually be omitted:
|
||||
|
@ -1071,12 +1074,11 @@ label(211)
|
|||
In all three forms mytt(code) behaves myem(similarly) to an anonymous
|
||||
function invoked like:
|
||||
verb(
|
||||
() { local REPLY; code } "$@"
|
||||
() { code } "$@"
|
||||
)
|
||||
Thus, mytt($REPLY) is implicitly local and returns to its previous
|
||||
value after the substitution ends, all other parameters declared from
|
||||
inside the substitution are also local by default, and positional
|
||||
parameters mytt($1), mytt($2), etc. are those of the calling context.
|
||||
Thus, all parameters declared inside the substitution are local by
|
||||
default, and positional parameters mytt($1), mytt($2), etc. are those
|
||||
of the calling context.
|
||||
|
||||
The most significant limitation is that braces (mytt({) and mytt(}))
|
||||
within the substitutions must either be in balanced pairs, or must be
|
||||
|
@ -1096,7 +1098,7 @@ sect(Comparisons of forking and non-forking command substitution)
|
|||
bash and ksh, unquoted non-forking substitutions behave like parameter
|
||||
expansions with respect to the tt(SH_WORD_SPLIT) option.
|
||||
|
||||
Both of the mytt(${|...}) formats retain any trailing newlines,
|
||||
Both mytt(${|...}) and mytt(${{var} ...}) retain any trailing newlines,
|
||||
except as handled by the tt(SH_WORD_SPLIT) option, consistent with
|
||||
mytt(${|...}) from mksh. mytt(${ command }) removes a single final
|
||||
newline, but mytt("${ command }") retains it. This differs from
|
||||
|
|
Loading…
Reference in a new issue