On Sun, 17 Nov 2024, Klemens Nanni wrote:
> 17.11.2024 22:49, George Koehler пишет:
> > On Sun, 17 Nov 2024 19:10:30 +0000
> > Klemens Nanni <[email protected]> wrote:
> >
> >> 17.11.2024 20:25, Andreas Kähäri пишет:
> >>> A the final right curly brace of a compound command must be preceeded by
> >>> a command terminator
> >>
> >> Not always:
> >>
> >> $ f() {} ; typeset -f f
> >> f() {}
> >
> > That isn't a compound command,
> >
> > $ f() {}; f
> > ksh: {}: not found
> >
> > It's a single command, like
> >
> > $ f() uname; f
> > OpenBSD
> >
> > To make a compound command, the { and } must be the first word of
> > a command; {} is a different word.
>
> Ah, spaces between { and } are significant.
>
> So is this a compound command? Looks like one:
>
> $ f() { }; typeset -f f
> f() {
>
> }
Yes, of course: close-brace is only recognized as a reserved word when in
the position to be recognized as the first word of a command, but the
token after a reserved word except 'case', 'for', or 'in' (but including
open-brace) is in such a position. So yes, { } is a valid compound
command. (XCU 2.4 Reserved Words)