# simplest case cat <(echo "hello 1") # can have more than one cat <(echo "hello 2") <(echo "hello 3") # doesn't work in quotes echo "<(echo \"hello 0\")" # process substitution can be nested inside command substitution echo $(cat <(echo "hello 4")) # example from http://wiki.bash-hackers.org/syntax/expansion/proc_subst # process substitutions can be passed to a function as parameters or # variables f() { cat "$1" >"$x" } x=>(tr '[:lower:]' '[:upper:]') f <(echo 'hi there') # process substitution can be combined with redirection on exec rm -f err # save stderr exec 4>&2 # copy stderr to a file exec 2> >(tee err) echo "hello error" >&2 sync # restore stderr exec 2>&4 cat err rm -f err echo "hello stderr" >&2