Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: preserving single quotes
On 2022-09-28 03:00, Stephane Chazelas wrote:
Use ${(Q)${(z)dd}} instead of $=dd. See `man zshexpn` for the meaning
of (z) and (Q).
Roman.
Didn't work.
Use either:
dd() aptitude search '?name(libreoffice-java-common)'
ee=$(dd)
Cool. So we can just create a little impromptu function. Never tried
that but it works. I sorta understand that since the string isn't being
handed off to something else, zsh doesn't feel the need to strip off the
quotes -- the function is just as written.
Or:
dd="aptitude search '?name(libreoffice-java-common)'"
ee=$(eval -- $dd)
My old friend eval. But Bart advises to get away from it. Anyway it
works for now.
Or:
dd=( aptitude search '?name(libreoffice-java-common)' )
# or
...
ee=$( "$dd[@]" )
Works. But that puzzles me, it seems simplest, but how is that that
saving the aptitude string as an array preserves the single quotes? It
seems unintuitive that the method of saving the string would make the
difference.
$=dd just does $IFS-splitting. If $dd is meant to contain shell code,
you should use eval to evaluate it. But to store code, you
generally use functions not variables. The z and Q parameter
expansion flags can do the same tokenisation and quote removal
as the shell syntax parser does, but I don't think you want to
go there.
I've never had anything but grief in the Q continuum. Hard to express
it, but it all seems so .... ad hoc, vague, Rube Goldberg, full of
gotchas -- (qqq) doesn't work on Mondays -- impossible to remember,
forced ... but your solutions above are crisp, and understandable and
rememberable.
Thanks gentlemen both.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author