On 27/01/2021 16.07, Clark Wang wrote:
> $(|cmd ...) makes more sense for me. '|' is a pipe which means passthrough.
>
> For future extensions, use
>
> $(&flag1[=value1]&flag2[=value2] cmd ...)
>
> For example,
>
> $(&keep_trailing_newlines cmd ...) is just the same as $(|cmd ...).
> $(&no_fork cmd ...) means the ksh style ${ cmd ... }.
But piping basically connects subshells, and the semantics was supposed
to be "no subshell". Why then not this:
$(; var1=val2 var2=val2 command;)
Because a semicolon normally does not start a subshell, and "$(; ;)" is
more or less a clean and meaningful delimiter. Although it still has the
( ) parentheses which indicate a subshell...
${; var1=val2 var2=val2 command;}
(Confusing for using the "${ }" variable substitution semantics...)
"${{ }}" is then not so bad an option, duplication of brackets to
change/enhance the semantics is already a thing in bash.
Peter