this works:
nc shldvgfas005 6155 < temp.6153
this hangs:
cmd="nc shldvgfas005 6153 < temp.6153"; $cmd
The difference you see here is due to the shell parsing redirection operators before parameter expansions.
this gives an error:
cmd="nc shldvgfas005 6153 < temp.6153"; "$cmd"
-bash: nc shldvgfas005 6153 < temp.6153: command not found
This command fails because the quotes around the parameter expansion prevent it from being split into multiple fields. The shell tries to find a single executable named nc shldvgfas005 6153 < temp.6153
(i.e. there are embedded spaces in the filename), but fails to find any such file. Also, the redirection does not happen due to the same reason as the first failure.
For the details of your shell’s parsing, consult its manual (or that of a related shell; possibly the POSIX Shell Command Language specification). In general, all Bourne-like shells parse redirections before expansions. So the redirection operator can not be part of a variable (though the redirection source/target (filename) can be a variable). Some folks like to use eval to make stuff like this work, but it is a bad idea unless you are fully aware of the security implications.