プロセス置換 <( ) をシェルスクリプトの引数にすると、たとえば

$ cat test.sh
#!/bin/sh
cat $1
echo ===========
cat $1
echo ===========
$ ./test.sh <( echo hoge )
hoge
echo ===========
echo ===========

というふうに、1回呼び出すと実体が消滅してしまうようなのですが、これはどういう理由からでしょうか?
また、2回以降も使いたい場合はどうすればいいでしょうか?