From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1433 invoked from network); 12 Aug 2005 14:49:04 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 12 Aug 2005 14:49:04 -0000 Received: (qmail 14662 invoked from network); 12 Aug 2005 14:48:56 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 12 Aug 2005 14:48:56 -0000 Received: (qmail 2083 invoked by alias); 12 Aug 2005 14:48:48 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9306 Received: (qmail 2073 invoked from network); 12 Aug 2005 14:48:47 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 12 Aug 2005 14:48:47 -0000 Received: (qmail 13717 invoked from network); 12 Aug 2005 14:48:47 -0000 Received: from ns9.hostinglmi.net (213.194.149.146) by a.mx.sunsite.dk with SMTP; 12 Aug 2005 14:48:41 -0000 Received: from 212.red-80-35-44.pooles.rima-tde.net ([80.35.44.212] helo=localhost) by ns9.hostinglmi.net with esmtpa (Exim 4.51) id 1E3apv-0003Zk-Qa; Fri, 12 Aug 2005 16:48:44 +0200 Date: Fri, 12 Aug 2005 16:52:08 +0200 From: DervishD To: Bart Schaefer Cc: Zsh Users Subject: Re: Printing arrays for use with $() Message-ID: <20050812145208.GA234@DervishD> Mail-Followup-To: Bart Schaefer , Zsh Users References: <20050811161654.GA8200@DervishD> <1050811163714.ZM2498@candle.brasslantern.com> <20050811170124.GA8279@DervishD> <20050811222847.GA341@DervishD> <1050812022700.ZM12607@candle.brasslantern.com> <20050812082909.GB354@DervishD> <1050812143713.ZM13160@candle.brasslantern.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1050812143713.ZM13160@candle.brasslantern.com> User-Agent: Mutt/1.4.2.1i Organization: DervishD X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - ns9.hostinglmi.net X-AntiAbuse: Original Domain - sunsite.dk X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - dervishd.net X-Source: X-Source-Args: X-Source-Dir: X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.0.4 Hi Bart :) * Bart Schaefer dixit: > } I'm thinking about another solution that could be better, since > } sometimes I want to manually review the list before passing it to the > } command (and the scripts generates a *different* list each time is > } called): > } > } array=(`myscript args`) > > A potential way to do this would be to have myscript print the entire > assignment expression: > > print -r -- array=\( ${(q)array} \) > > and then have the caller simply do: > > eval $(myscript args) I prefer the solution you post below... > } Could I do the above, using 'print -N', and after that forcing > } the split in NULLs? I've tested this (doesn't work): > } > } array=(`print -N -- $list`) > > This doesn't work because in an array context zsh is going to split on > $IFS during the assignment itself, so you already have the wrong thing > in $array before you even get as far as printing it. You need to use > a scalar assignment: > > notyetarray=`print -N -- $list` > array=(${(s:$'\0':)notyetarray}) > > Or (note the double quotes): > > array=( ${(ps:\0:)"$(print -rN -- $list)"} ) I've posted a minute ago a possible solution, using more or less the same mechanism, only I was using ':' as the separator and not '\0' because it doesn't work for me. I mean, if I do the above, I cannot use the array directly, I need: du -s ${(ps:\0:)array} Take a look at my other message about this solution, please, and make comments to the method I'm using. Thanks again, Bart. Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net http://www.pleyades.net & http://www.gotesdelluna.net It's my PC and I'll cry if I want to...