From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26491 invoked by alias); 23 Feb 2011 21:28:03 -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: 15826 Received: (qmail 21747 invoked from network); 23 Feb 2011 21:27:51 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at benizi.com designates 64.130.10.15 as permitted sender) Date: Wed, 23 Feb 2011 16:27:22 -0500 (EST) From: "Benjamin R. Haskell" To: Bart Schaefer cc: Zsh Users Subject: Re: Function-scoped parameters? In-Reply-To: Message-ID: References: User-Agent: Alpine 2.01 (LNX 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463810530-517901163-1298496466=:2792" ---1463810530-517901163-1298496466=:2792 Content-Type: TEXT/PLAIN; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT On Wed, 23 Feb 2011, Bart Schaefer wrote: > On Wednesday, February 23, 2011, Benjamin R. Haskell wrote: >> The use case is that I want to assign a local parameter 'temp' to be >> set to the name of a temporary file.  If anything goes wrong in the >> function, I'd like that temporary file to be removed, but I don't >> want 'temp' to leak out of the function scope. > > That's what "always" is for. > > dosomething() { > emulate -L zsh > local temp=$(mktemp) > setopt err_return > { > # ... > } always { > (( $+temp )) && rm $temp > } > } > ... Whoa. ... Still wondering what other shells do, but man, I love Zsh. -- Best, Ben ---1463810530-517901163-1298496466=:2792--