# process substitution constructs that have caused problems in the past . ./test-glue-functions eval cat <(echo test1) eval "echo foo;cat" <(echo test2) unset f f=<(echo test3); cat "$f" unset f eval f=<(echo test4) "; cat \$f" unset f FN=$TMPDIR/bashtest-procsub-$$ cat >"$FN" </dev/null } f2(){ date >/dev/null cat $1 } cat <(echo hi) f1 <(echo bye) f2 <(echo l8r) unset -f f1 f2 # set up conditions for test ulimit -n 256 bug() { c=$(ulimit -n) let c+=100 while let c-- do while read -ru3 x do echo -n : done 3< <(echo x) done echo } bug unset -f bug count_lines() { wc -l < $1 # case "$1" in # *sh-np*) [ -e "$1" ] || { echo 0; echo 0; echo 0; echo 0; return; } ;; # *) ;; # esac wc -l < $1 wc -l < $1 true | wc -l < $1 wc -l < $1 } echo intern count_lines <(date) | _cut_leading_spaces unset -f count_lines echo extern FN=$TMPDIR/bashtest-$$ cat >$FN << \EOF wc -l < $1 wc -l < $1 wc -l < $1 true | wc -l < $1 wc -l < $1 EOF ${THIS_SH} -c "source $FN <(date)" | _cut_leading_spaces rm -f $FN moo() { ls -l "$1" >/dev/null; ls -l "$1" >/dev/null; }; moo >(true) moo() { ls -al "$1" >/dev/null; (true); ls -al "$1" >/dev/null; }; moo >(true) unset -f moo ${THIS_SH} ./procsub1.sub