Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

double quoted expansion question



Dear zsh users,

I am trying to make a unique list of tags that is given in a string with a certain format, e.  g.:

  servers="
  madeira linux,gpu,users
  madeira2 linux,gpu,users
  smtp linux,mail,smtp
  isar linux,users
  easygwa linux,web,external
  "

The format is: server name, space, tag, comma, tag, comma, tag ...

What I want from the above list is this:

  external gpu linux mail smtp users web 

and I get it with:

  print  ${(s:,:uo)${(j:,:)${${(f)servers}//* /}}} 

However, if I do this:

  print "${(s:,:uo)${(j:,:)${${(f)servers}//* /}}}"

I get:

  external linux web

This also happens when I use the variable expansion expression in a here document, which, I suppose, is undergoing the same treatment as double quoted strings.

What I would like to understand here is why the output changes the way it does when I add double quotes around my expression. I would expect the same output as without. If anybody could shed some light please, I guess it's just something obvious I cannot see.


Sebastian




Messages sorted by: Reverse Date, Date, Thread, Author