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

Re: joining array elements



I think my example was unclear (Sorry). Basically, I wanted an output that looks like,

David
Matt
Bob[return]Sara[return]Tim

I can get it with,
foo=$( printf '%s\n' David Matt ${(j:[return]:)usernames} )
with the 'globsubst' option turned off. However, I was trying to incorporate your tip, because I wanted to keep that option turned on.

foo=$( printf '%s\n' David Matt ${(j:[return]:)~~usernames} )
gives me no output (with the 'nullglob' option set).

Thanks.

On 2006/01/12, at 20:54, Peter Stephenson wrote:

Wataru Kagawa wrote:
Hi Peter,

Thank you for the tip.  I would like to place the expansion into a
variable, however, I am having a trouble.

% usernames=( Bob Sara Tim )
% print -R ${(j:[return]:)~~usernames}
Bob[return]Sara[return]Tim

However,

% foo=$( printf '%s\n' David Matt ${(j:[return]:)~~usernames} )
% echo $foo

What effect are you trying to achieve?  The command you show does
exactly what I expect it to. Do you mean you want David and Matt added
in the same way and the result put in foo?

usernames2=(David Matt $usernames)
foo=${(j:[return]:)~~usernames2}

Or do you mean you want the same effect as you get when outputting David and Matt using printf, but with all the names, so that foo ends up being
joined with newlines?

foo=${(F)usernames2}

--
Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070


Your mail client is unable to display the latest news from CSR. To access our news copy this link into a web browser: http:// www.csr.com/email_sig.html



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