Shells may show different behaviour depending on the name it is called as;
the OP observed that difference (as did another poster recently with cron).
I don't know details of your distribution. Reasons why those interpreters
don't work in your case could for example be that those shells may be in a
different directory (/usr/bin/*sh), or that you have old software or shell
clones instead of the original ones. Inspect where the shell paths are,
and check that you have a modern shell that supports process substitution.
Or maybe you haven't made your script executable. Try running your script
explicitly with the correct interpreter, bash myscript, instead of myscript.
Janis