mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-06-09 18:38:05 +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>
|
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,
|
* 52864: Src/lex.c, Src/subst.c, Test/D10nofork.ztst,
|
||||||
Test/V10private.ztst: Change ${|var|...} to ${{var} ...},
|
Test/V10private.ztst: Change ${|var|...} to ${{var} ...},
|
||||||
limit local REPLY behavior to ${|...}, update tests.
|
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, current shell)
|
||||||
cindex(substitution, command, non forking)
|
cindex(substitution, command, non forking)
|
||||||
cindex(substitution, nofork)
|
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
|
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)
|
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
|
and var(param) should em(not) be declared within the command. No space
|
||||||
within the command. If, after evaluating the expression, var(param)
|
is allowed within `tt(${{)' and space or newline is required after
|
||||||
names an array, array expansion rules apply. However, tt(REPLY) is
|
`tt({)var(param)tt(})'. The var(param) may include a subscript, and if,
|
||||||
always expanded in scalar context, even if assigned an array.
|
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
|
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
|
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
|
single trailing newline is stripped unless the substitution is enclosed
|
||||||
in double quotes.
|
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
|
must be parsed at once as both string tokens and commands, all other
|
||||||
braces (`tt({)' or `tt(})') within the command either must be quoted,
|
braces (`tt({)' or `tt(})') within the command either must be quoted,
|
||||||
or must appear in syntactically valid pairs, such as around complex
|
or must appear in syntactically valid pairs, such as around complex
|
||||||
|
|
|
@ -1032,8 +1032,8 @@ the shell.
|
||||||
)
|
)
|
||||||
item(tt(cmdsubst))(
|
item(tt(cmdsubst))(
|
||||||
Command substitution using of the tt(`)var(...)tt(`),
|
Command substitution using of the tt(`)var(...)tt(`),
|
||||||
tt($+LPAR())var(...)tt(RPAR()), tt(${ )var(...)tt( }) or
|
tt($+LPAR())var(...)tt(RPAR()),tt(${{)var(name)tt(}) var(...)tt(}),
|
||||||
tt(${|)var(...)tt(}) constructs.
|
tt(${|)var(...)tt(}), or tt(${ )var(...)tt( }) constructs.
|
||||||
)
|
)
|
||||||
item(tt(equalsubst))(
|
item(tt(equalsubst))(
|
||||||
The tt(=+LPAR())var(...)tt(RPAR()) form of process substitution.
|
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}).
|
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
|
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
|
eit() An extension to #1
|
||||||
verb(
|
verb(
|
||||||
${|var| code }
|
${{var} code }
|
||||||
)
|
)
|
||||||
Runs code in the current shell and then substitutes mytt(${var}). If
|
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,
|
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(;)
|
eit() The traditional ksh form, except that the closing mytt(;)
|
||||||
may usually be omitted:
|
may usually be omitted:
|
||||||
|
@ -1071,12 +1074,11 @@ label(211)
|
||||||
In all three forms mytt(code) behaves myem(similarly) to an anonymous
|
In all three forms mytt(code) behaves myem(similarly) to an anonymous
|
||||||
function invoked like:
|
function invoked like:
|
||||||
verb(
|
verb(
|
||||||
() { local REPLY; code } "$@"
|
() { code } "$@"
|
||||||
)
|
)
|
||||||
Thus, mytt($REPLY) is implicitly local and returns to its previous
|
Thus, all parameters declared inside the substitution are local by
|
||||||
value after the substitution ends, all other parameters declared from
|
default, and positional parameters mytt($1), mytt($2), etc. are those
|
||||||
inside the substitution are also local by default, and positional
|
of the calling context.
|
||||||
parameters mytt($1), mytt($2), etc. are those of the calling context.
|
|
||||||
|
|
||||||
The most significant limitation is that braces (mytt({) and mytt(}))
|
The most significant limitation is that braces (mytt({) and mytt(}))
|
||||||
within the substitutions must either be in balanced pairs, or must be
|
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
|
bash and ksh, unquoted non-forking substitutions behave like parameter
|
||||||
expansions with respect to the tt(SH_WORD_SPLIT) option.
|
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
|
except as handled by the tt(SH_WORD_SPLIT) option, consistent with
|
||||||
mytt(${|...}) from mksh. mytt(${ command }) removes a single final
|
mytt(${|...}) from mksh. mytt(${ command }) removes a single final
|
||||||
newline, but mytt("${ command }") retains it. This differs from
|
newline, but mytt("${ command }") retains it. This differs from
|
||||||
|
|
Loading…
Reference in a new issue