At Sunday 08 August 2010, Ralf Wildenhues wrote: > * Stefano Lattarini wrote on Sun, Aug 08, 2010 at 06:06:04PM CEST: > > At Sunday 08 August 2010, Ralf Wildenhues wrote: > > > No. You save a fork with > > > > > > foo () > > > { > > > > > > ... > > > foo_result=bar > > > > > > } > > > > > > foo ARG... > > > test "$foo_result" = ... > > > > Yes, but how do you get foo_result in our case? ;-) > > With sed, of course. Exactly! So: foo() { foo_result=`sed ...`; } foo; bar=$foo_result; instead of: foo() { sed ...; } bar=`foo` Where is the significant improvement?
> > Or am I missing something? > > I think you are. You proposed > result=`foo ...` > test "$result" = ... > which is an extra fork over the above, regardless of what foo does > internally. Even considering my latest example above? I'd like to sort this out, since if I am mistaken it means that I'm probably misunderstanding something important... Regards, Stefano P.S. I'm delibrately ignoring that we might also want to just redirect the output of foo() to a file, which means that: foo() { foo_result=`sed ...`; } would lead us to extra useless forks *and* to extra coding indirections, i.e.: foo; echo "$foo_result" > file instead of: foo > file