From 02225925efc7152b52045049e33ceb76b12819dc Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 18 Oct 2012 16:18:57 +0000 Subject: 30740: add example of process substitution using anonymous function --- ChangeLog | 5 ++++- Doc/Zsh/expn.yo | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d70dc1d51..5118cace6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-10-18 Peter Stephenson + * 30740: Doc/Zsh/expn.yo: add example of process substitution + with anonymous function. + * c.f. users/17330: Doc/Zsh/expn.yo: fix reference to splitting rule in parameter expansion rules. @@ -274,5 +277,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5746 $ +* $Revision: 1.5747 $ ***************************************************** diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo index 18d0447f3..9d6b5c3b5 100644 --- a/Doc/Zsh/expn.yo +++ b/Doc/Zsh/expn.yo @@ -483,6 +483,24 @@ example(LPAR()mycmd =(myoutput)RPAR() &!) as the forked subshell will wait for the command to finish then remove the temporary file. +A general workaround to ensure a process substitution endures for +an appropriate length of time is to pass it as a parameter to +an anonymous shell function (a piece of shell code that is run +immediately with function scope). For example, this code: + +example(LPAR()RPAR() { + print File $1: + cat $1 +} =+LPAR()print This be the verse+RPAR()) + +outputs something resembling the following + +example(File /tmp/zsh6nU0kS: +This be the verse) + +The temporary file created by the process substitution will be deleted +when the function exits. + texinode(Parameter Expansion)(Command Substitution)(Process Substitution)(Expansion) sect(Parameter Expansion) cindex(parameter expansion) -- cgit 1.4.1