From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16960 invoked by alias); 1 Nov 2014 04:23:04 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 19300 Received: (qmail 13080 invoked from network); 1 Nov 2014 04:23:01 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 X-Authority-Analysis: v=2.1 cv=HYUtEE08 c=1 sm=1 tr=0 a=neq5LNigvb1lkNg9SvfBLA==:117 a=neq5LNigvb1lkNg9SvfBLA==:17 a=gmhVCtT3eHoA:10 a=N659UExz7-8A:10 a=pEdlMpeRYjbzWbzFrGEA:9 a=pILNOxqGKmIA:10 Message-id: <545460D9.2090804@eastlink.ca> Date: Fri, 31 Oct 2014 21:26:01 -0700 From: Ray Andrews User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Icedove/31.1.2 MIME-version: 1.0 To: zsh-users@zsh.org Subject: Re: first adventures References: <544D2D6F.8030505@eastlink.ca> <20141026175257.2611487b@pws-pc.ntlworld.com> <544FD6DD.7010806@eastlink.ca> <141028210510.ZM10784@torch.brasslantern.com> <54510A96.20009@eastlink.ca> <141029134624.ZM15681@torch.brasslantern.com> <545178DF.1040600@eastlink.ca> <141029210738.ZM15833@torch.brasslantern.com> <5452ED18.7070208@eastlink.ca> <141030195906.ZM30057@torch.brasslantern.com> <5453D0AE.6020705@eastlink.ca> <20141031195903.167d3e05@pws-pc.ntlworld.com> In-reply-to: <20141031195903.167d3e05@pws-pc.ntlworld.com> Content-type: text/plain; charset=windows-1252; format=flowed Content-transfer-encoding: 7bit On 10/31/2014 12:59 PM, Peter Stephenson wrote: Strange, I'm getting double posts both sending and receiving. > On Fri, 31 Oct 2014 11:10:54 -0700 > Ray Andrews wrote: >> One further question, I tried the ' (Q) ' flag to remove quotes, and it >> works >> as advertised, however trying to print individual array elements fails >> whereas >> they print fine with the ' (z) 'flag. Why is that? > They're doing different things. (Q) really does just remove quotes, it > doesn't split things into elements. (z) splits things into elements > using the shell's normal rules, but doesn't remove quotes. Right. Somehow I assumed the breakdown as well, tho there's no reason I should have. > You might be running up against the problem that if you combine them in > the obvious way it doesn't do what you want because the splitting > happens too late. That's a deliberate rule, it's just not convenient in > this particular case --- there are so many cases for parameter expansion > it's quite impossible to get them all to work in the simplest way. Sure. I find it unbelievable that anyone can keep any sort of handle on this at all. So much power, but is it even possible to keep a rigid syntax? > % print -rl ${(Q)${(z)line}} > one two > buckle my shoe > three four > > Finally, you've got exactly the right set of arguments as simple strings. Outstanding. One might wish for something simpler, but if you can nest those things like that, then you could probably get it to do your taxes. zsh seems to always trade away simplicity for power, but the power is indeed awesome. But there is always a gotcha: Using (( $#functrace == 1 )) && TLC=(${(z)ZSH_DEBUG_CMD}) $ test2 'one \n' "two \n" buckle \n My unexpanded arguments were: test2 'one \n' "two \n" buckle \n ...and my arguments broken to an array: two: 'one \n' three: "two \n" four: buckle five: \n Using (( $#functrace == 1 )) && TLC=(${(Q)${(z)ZSH_DEBUG_CMD}}) } $ test 'one \n' "two \n" buckle \n My unexpanded arguments were: test2 one \n two \n buckle n ...and my arguments broken to an array: two: one \n three: two \n four: buckle five: n << Why does it remove the backslash?