is mostly the same as
cmd1 | cmd2
yash shell, and that shell only.
In that shell,
>(cmd) is process redirection as opposed to the
zsh which is process substitution.
It's not strictly equivalent, because in
yash doesn't wait for
cmd2, so you may find that:
$ yash -c 'echo A >(cat); echo B'
$ yash -c 'echo A | cat; echo B'
By contrast, process substitution expands to a file path (typically a named pipe or a
<x> is a fd to a pipe that has been created beforehand) which, when open for writing will allow to send output to
While process substitution was introduced by
ksh, in that shell, you can't pass them as argument to redirections.
ksh -c 'cmd1 > >(cmd2)'
yash process redirection won't work. There, you're meant to pass that file name resulting from the substitution as argument to a command like in:
ksh -c 'diff <(echo a) <(echo b)'
It will work in
bash like for
yash's process redirection, the shell doesn't wait for the command (
$ bash -c 'echo A > >(cat); echo B'
ksh process substitution can be emulated with
cmd1 /dev/fd/5 5>(cmd2)
diff /dev/fd/3 3<(echo a) /dev/fd/4 4<(echo b)