From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5024 invoked from network); 13 Nov 2008 14:25:25 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 13 Nov 2008 14:25:25 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 4020 invoked from network); 13 Nov 2008 14:25:16 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 13 Nov 2008 14:25:16 -0000 Received: (qmail 2920 invoked by alias); 13 Nov 2008 14:25:11 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 26035 Received: (qmail 2906 invoked from network); 13 Nov 2008 14:25:11 -0000 Received: from bifrost.dotsrc.org (130.225.254.106) by sunsite.dk with SMTP; 13 Nov 2008 14:25:11 -0000 Received: from mail.o2.co.uk (sidious.london.02.net [82.132.130.152]) by bifrost.dotsrc.org (Postfix) with ESMTP id 119C180308BE for ; Thu, 13 Nov 2008 15:25:07 +0100 (CET) Received: from sc.homeunix.net (78.105.216.138) by mail.o2.co.uk (8.0.013.3) (authenticated as stephane.chazelas) id 49196DF1005E3593 for zsh-workers@sunsite.dk; Thu, 13 Nov 2008 14:25:07 +0000 Received: from chazelas by sc.homeunix.net with local (Exim 4.69) (envelope-from ) id 1L0d86-0002Ka-JW for zsh-workers@sunsite.dk; Thu, 13 Nov 2008 14:25:06 +0000 Date: Thu, 13 Nov 2008 14:25:06 +0000 From: Stephane Chazelas To: Zsh hackers list Subject: Re: f() { ...; } > file Message-ID: <20081113142506.GA5114@sc.homeunix.net> Mail-Followup-To: Zsh hackers list References: <20081105212036.GA4698@sc.homeunix.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20081105212036.GA4698@sc.homeunix.net> User-Agent: Mutt/1.5.16 (2007-09-19) X-Virus-Scanned: ClamAV 0.92.1/8627/Thu Nov 13 10:42:40 2008 on bifrost X-Virus-Status: Clean On Wed, Nov 05, 2008 at 09:20:36PM +0000, Stephane Chazelas wrote: [...] > $ bash -c 'foo() { echo a >&3; } 3>&1; foo' > a > $ ksh -c 'foo() { echo a >&3; } 3>&1; foo' > a > $ zsh -c 'foo() { echo a >&3; } 3>&1; foo' > foo: 3: bad file descriptor > $ ARGV0=sh zsh -c 'foo() { command echo a >&3; } 3>&1; foo' > foo: 3: bad file descriptor > > It looks like zsh evaluates the redirection at the time the > function is defined rather than when it is called. > > It's OK when declaring the function as > > foo() echo a > file > or > foo() (echo a) > file > > instead of > > foo() { echo a; } > file [...] Interestingly, foo() > file { echo a; } works: ~$ bash -c 'f() { echo a; } > /dev/null; declare -f' f () { echo a } > /dev/null ~$ ksh -c 'f() { echo a; } > /dev/null; typeset -f' f() { echo a; } > /dev/null;% ~$ zsh -c 'f() { echo a; } > /dev/null; typeset -f' f () { echo a } ~$ zsh -c 'f() > /dev/null { echo a; }; typeset -f' f () { { echo a } > /dev/null } -- Stéphane