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. > > > > > >