From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7835 invoked from network); 12 Feb 1999 16:02:18 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 12 Feb 1999 16:02:18 -0000 Received: (qmail 29653 invoked by alias); 12 Feb 1999 16:01:54 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 5357 Received: (qmail 29625 invoked from network); 12 Feb 1999 16:01:51 -0000 Message-Id: <9902121545.AA44295@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk Subject: Re: PATCH: zsh-3.1.5-pws-7: "$a[@]" with $a unset In-Reply-To: ""Bart Schaefer""'s message of "Fri, 12 Feb 1999 07:43:45 NFT." <990212074345.ZM8144@candle.brasslantern.com> Date: Fri, 12 Feb 1999 16:45:38 +0100 From: Peter Stephenson > } Sven Wischnowsky wrote: > } > % foo() { echo $# } > } > % unset a > } > % foo $a[@] > } > 0 # fine > } > % foo "$a[@]" > } > 1 # oops > > That's not an "oops". That's the way it's supposed to work. Try the > equivalent code in bash. Bash doesn't even have arrays, apart from "$@", of course. Try it in ksh, and remember you need "${f[@]}" because the bracing rules are more strict, and you'll find it elides the whole thing as with the patch. Taking a @ subscript was never a well-defined thing to do on a scalar, whether or not it happens to be so with a zsh extension; its essential purpose is to provide word splitting for arrays in strings, so zero elements gives zero words. (And if it leaves a null argument on the line for an empty scalar, I would argue that's inconsistently implemented.) > I don't think we want this patch. It seems pretty clear to me the shell is just plain broken without it. -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy