Re: protect backslash before space

"Mark J. Reed" <[email protected]> Wed, 1 Apr 2026 12:12:16 -0400
Newsgroups gmane.comp.shells.zsh.devel,gmane.comp.shells.zsh.user
Message-ID <CAA=-s3wOr=HsatJhhFVxAZ5y=9435aTv+E6mCtx1j7RFNjpyaA@mail.gmail.com>
Please clarify what exactly you're trying to accomplish here?

Mark J. Reed <[email protected]>


On Wed, Apr 1, 2026 at 12:09 Ray Andrews <[email protected]> wrote:

> #!/usr/bin/zsh
>
> alias test='noglob _test'
> function _test ()
> {
>     # .... lines of code
>     eval echo $@
>     # ... lines of code
> }
> ls -- $@
>
> run, testing on file 'junk junk':
>
> 5 /aWorking/Zsh/Source/Wk 3 % . test junk* && test junk*
> 'junk junk'
> junk junk
>
> 5 /aWorking/Zsh/Source/Wk 3 % . test junk\ * && test 'junk\ *'
> 'junk junk'
> junk junk
>
> --------------------------
>
> I like my functions to be able to see their own tail.  This is one of the
> first brick walls I threw myself against when I first started using zsh and
> I understand that it's asking the shell not to do what it's designed to
> do.  Anyway, it turned out that 'noglob' came close, and then 'eval' to
> make the glob expansion when the time came.  Works well, except for the
> backslash before a space.  'noglob' does not protect it.  I can work around
> it by simply quoting as I've done in the second run above.  But is there a
> better way?  Reason I bring it up is that I was wondering if that recent
> cool stuff that Eric Wybouw was doing that boiled down to:
>
> BUFFER="= ${(q-)${${BUFFER#=}# }}"
>
> ... might point to a solution: some way of 'auto quoting' so that I'd not
> have to manually add the quotes as above.  Or some other way of preserving
> the backslash.
>
> BTW, question: why does the script version above add the single quotes to
> indicate a single filename whereas the 'eval'ed version doesn't see the
> need?  I'd vaguely expect the single quotes in both.
>
>
>
>
>
>