On Mon, Jul 29, 2019 at 01:09:28PM -0400, Eli Schwartz wrote:
> On 7/29/19 1:01 PM, Clint Hepner wrote:
> > The ``[`` begins a valid shell pattern, so the parser continues to
> > accept input until the closing ``]`` is found. Pathname expansion
> > (apparently) does not apply to the first "argument" of the
> > ``function`` command.
>
> The initial workaround discovered, was to use
>
> $ function _[ () { echo hello; }; <() _[
> hello
>
> The use of <() somehow suppresses the glitch in the same way that
> quoting it does. If it were just glob expansion, then why should that be so?
Or even simpler:
wooledg:~$ echo x[
x[
wooledg:~$ x[
>
The glitch doesn't occur when the x[ is an argument of a simple command.
It only occurs when x[ is being parsed *as* the command. So, while I
suspect "looking for a glob" is part of the answer, it's not the whole
picture.