From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 4f98e705 for ; Mon, 3 Dec 2018 15:00:09 +0000 (UTC) Received: (qmail 18788 invoked by alias); 3 Dec 2018 14:59:36 -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: List-Unsubscribe: X-Seq: 23790 Received: (qmail 12373 invoked by uid 1010); 3 Dec 2018 14:59:36 -0000 X-Qmail-Scanner-Diagnostics: from mailout2.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.100.2/25112. spamassassin: 3.4.2. Clear:RC:0(210.118.77.12):SA:0(-8.7/5.0):. Processed in 0.741299 secs); 03 Dec 2018 14:59:36 -0000 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181203145932euoutp026fccba44391a46b6863b0663ad9559ab~s2qSjVz7q2310623106euoutp02c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1543849172; bh=gDARv9NEsIyB1ZwNXaLqMGHaujmstH1/7E2YSQt8at0=; h=Subject:From:To:Date:In-Reply-To:References:From; b=tkBJMA4G2YiL0TPeVLVsm3wQcx36DQLJzq6wUHV7xk3CpJ6qVq7yQ+ACz1MVR8pbI Y3+8BYEZrgMEyOGIrhQXcvQqR4kdSi92KHJ9oE3Mq/aYWxgidhBkXVrtZhSt3p268q YjjUUpNo0e8tzg0vEXVTU4bSZLtjR2Gx8MpMec6s= X-AuditID: cbfec7f5-34dff700000012c6-cd-5c0544d339a4 Message-ID: <1543849170.4215.11.camel@samsung.com> Subject: Re: How to trap to script EXIT instead of function EXIT? From: Peter Stephenson To: Date: Mon, 3 Dec 2018 14:59:30 +0000 In-Reply-To: X-Mailer: Evolution 3.18.5.2-0ubuntu3.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLIsWRmVeSWpSXmKPExsWy7djPc7qXXVhjDCaeMLfYcXIlowOjx6qD H5gCGKO4bFJSczLLUov07RK4MlauCin4zVJxbflx1gbG18xdjBwcEgImEnuO2nQxcnEICaxg lJh89Cg7hNPDJLHy1jQop5tJ4vKHe0AOJ1jHm2ndTBCJ5YwSDx/uZYGrerjuElTmNKPEsm9T oTLnGSXaupqZQfp5BYwk/r/6ATZLWMBR4s7Gm0wgNpuAocTUTbMZQWwRAXGJZzO/sYDYLAIq Ep9OPGQDuZZTIFBi3ro6iDM0JDbcPMYEMVJQ4uTMJ2DlzALyEs1bZzOD7JUQeMwmsfh9JytE g4vEm40nmSBsYYlXx7dA/SMj8X/nfCaIhnZGiTWTXrNDOD2MEpuO3mGEqLKW6Lt9kRHkCmYB TYn1u/Qhwo4Szy48YIQEJZ/EjbeCEEfwSUzaNh0awrwSHW1CENVqEjuatkJVy0g8XaMwgVFp FpIPZiH5YBbCqgWMzKsYxVNLi3PTU4uN81LL9YoTc4tL89L1kvNzNzECE8Hpf8e/7mDc9yfp EKMAB6MSD+8MJ9YYIdbEsuLK3EOMEhzMSiK8BYUsMUK8KYmVValF+fFFpTmpxYcYpTlYlMR5 qxkeRAsJpCeWpGanphakFsFkmTg4pRoYd6y6NL26O+0j/5Ujuau0PxTMu1uenT7HLtG0XJ/R TO+w1S4mqQml9gvk+G6+LVvxzNGchyv397r6m34iys8OCG3yZnq63KP26BaRG7sjkuTWaTRW ec5N+ZS5uaTEYZK7TfaMl8bcH9yfqmu6bT57XUpoffBrP+2ASWcNss8+ietbm3DELei7Ektx RqKhFnNRcSIADiCjYAADAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpkkeLIzCtJLcpLzFFi42I5/e/4Xd3LLqwxBkf3slnsOLmS0YHRY9XB D0wBjFF6NkX5pSWpChn5xSW2StGGFkZ6hpYWekYmlnqGxuaxVkamSvp2NimpOZllqUX6dgl6 GStXhRT8Zqm4tvw4awPja+YuRk4OCQETiTfTupm6GLk4hASWMkosPHQSKiEj8enKR3YIW1ji z7UuNoiiTiaJg1d7WSGc04wSR99shWo/zygxcX0zWDuvgJHE/1c/wNqFBRwl7my8yQRiswkY SkzdNJsRxBYREJd4NvMbC4jNIqAi8enEQ6AVHBycAoES89bVQczcyiSx5UMHK0gNs4CmROv2 31AnaUhsuHmMCWKXoMTJmU9YIGrkJZq3zmaewCg0C0nLLCRls5CULWBkXsUoklpanJueW2yo V5yYW1yal66XnJ+7iREY/NuO/dy8g/HSxuBDjAIcjEo8vDOcWGOEWBPLiitzDzFKcDArifAW FLLECPGmJFZWpRblxxeV5qQWH2I0BXpoIrOUaHI+MDLzSuINTQ3NLSwNzY3Njc0slMR5zxtU RgkJpCeWpGanphakFsH0MXFwSjUwcp5edvi66E5W3ohMl1ZP7rIV5em79n3ZqH/y9OPNbnel a9Mi2Ke9K9+/gcFlmbvltiPH1QV5XneuvXtGpSS8UpHBRyr0Vlv+8wyD2xXxfy/8qyyLOPS6 tm+yBpdk7p/HUTPen44UP9P30yvkU+e0ywFWciZtO0TNeI4e6jJTmto4++ovvwkPlViKMxIN tZiLihMBjXiXNZQCAAA= X-CMS-MailID: 20181203145931eucas1p10e5b07666b6cb376d77fb1b03c75a4de X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20181203140729epcas3p4d79ac2825b148976f9b844dcb7578eb3 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181203140729epcas3p4d79ac2825b148976f9b844dcb7578eb3 References: On Mon, 2018-12-03 at 08:05 -0600, Peng Yu wrote: > If function f1 calls function f2, I want to call trap in f2 which > actually set the trap for f1. Is it possible? Obviously, this is incompatible with the POSIX-style trap usage. f1() {   f2() {     trap 'trap '\''print Was in $lastfunc'\'' EXIT' EXIT      lastfunc=f2   }   f2   lastfunc=f1 } You can neaten this with a bit of variable syntax... 1() {   f2() {     local -a trap=(trap 'print Was in $lastfunc' EXIT)     trap=(${(q)trap})     trap "$trap" EXIT     lastfunc=f2   }   f2   lastfunc=f1 } pws