I assume that the code above is Tcl. I see a few issues here:
- Why the eval? Does it output Tcl code that you want to execute?
Do you really want the following arguments:
bsub
-Ip
-R
type=SPARC
-cwd
/usr2/STATUS
'/usr2/j/local/bin/perl5.6.1
/usr2/j/CAM_STATUS/auto_submit
$c
$T
$E
$review
$Error
$Reset
$Analysis_Error
$DFTDSM_Analysis_Error
$LP_Analysis_Error'
I think you want exec bsub -Ip -R type=SPARC -cwd /usr2/STATUS "/usr2/j/local/bin/perl5.6.1 /usr2/j/CAM_STATUS/auto_submit $c $T $E $review $Error $Reset $Analysis_Error $DFTDSM_Analysis_Error $LP_Analysis_Error"
Use " for grouping if you want variable substitution, otherwise {} (Note that Tcl uses it's own variables for this, if you want the environment variables, use $ENV(FOO)
You get the stdout as result from exec when the child process has finished. If there is an error (something was written to stderr or return code != 0) then an error is thrown. Use a surrounding catch if this is the case. If you simply want to print it to std*, you could either redirect std* from the child process to your std* channels with the following "arguments": >@stdout 2>@stderr
So I believe your code should look more or less like this (depending on what you want to archive):
exec bsub -Ip -R type=SPARC -cwd /usr2/STATUS "/usr2/j/local/bin/perl5.6.1 /usr2/j/CAM_STATUS/auto_submit $c $T $E $review $Error $Reset $Analysis_Error $DFTDSM_Analysis_Error $LP_Analysis_Error" >@stdout 2>@stderr
puts "error entered"
exec bsub -Ip -R type=SPARC -cwd /usr2/STATUS "/usr2/j/local/bin/perl5.6.1 /usr2/j/CAM_STATUS/auto_pldrc_submit $c $T $W $Lint_Review_warning $Lint_Must_warning $Lint_Reset_warning $DFT_Analysis_warning $DFTDSM_Analysis_warning $LP_Analysis_warning" >@stdout 2>@stderr
exec bsub -Ip -R type=SPARC -cwd /usr2/SsATUS "/usr2/j/local/bin/perl5.6.1 /usr2/j/CAM_STATUS/auto_pldrc_submit $chip $TOP $runtime $run_time_lint_Review $run_time_lint_must $run_time_Lint_Reset $run_time_DFT_Analysis $run_time_DFTDSM_Analysis $run_time_LP_Analysis" >@stdout 2>@stderr