| # 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 |