execline
Software
skarnet.org
 The pipeline program 
pipeline runs two commands with a pipe between them.
 Interface 
 In an execlineb script:
     pipeline [ -d ] [ -r | -w ] { prog1... } prog2...
 -  pipeline reads prog1... in a
block and unquotes it. 
-  It runs prog1... as a child process and execs into
prog2..., with a pipe between prog1's stdout and
prog2's stdin. 
-  prog1's pid is available in prog2 as the !
environment variable. 
 Options 
 -  -d : run prog1...
as a grandchild of pipeline. This is meant to prevent a zombie
from hanging around if prog2... fails to wait for its children.
-  -r : make prog1... the writer and
prog2... the reader. This is the default. 
-  -w : make prog1... the reader and
prog2... the writer. 
 Notes 
 -  You can easily create a chain of pipes: execlineb -Pc 'pipeline { a } pipeline { b } c'
is roughly equivalent to
sh -c 'exec a | b | c', except that shells usually run c
as a child process like a and b, and exec has no
effect.