0

我正在尝试使用 bsub 命令从 tcl 执行 perl 脚本。它执行了第一个命令,但之后它没有打印 puts 值,也没有执行其他命令。

eval [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']

puts "error entered"

eval [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']

eval [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']
4

1 回答 1

2

我假设上面的代码是 Tcl。我在这里看到一些问题:

  1. 为什么要评估?它是否输出您要执行的 Tcl 代码?
  2. 你真的想要以下论点:

    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'
    

    我想你想要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"

    如果"您想要变量替换,则用于分组,否则{}(请注意,Tcl 为此使用它自己的变量,如果您想要环境变量,请使用$ENV(FOO)

  3. exec当子进程完成时,您会得到标准输出。如果出现错误(某些内容被写入 stderr 或返回代码!= 0),则会引发错误。catch如果是这种情况,请使用周围环境。如果您只是想将其打印到 std*,您可以使用以下“参数”将 std* 从子进程重定向到您的 std* 通道:>@stdout 2>@stderr

所以我相信你的代码应该或多或少像这样(取决于你想要归档的内容):

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
于 2013-05-29T22:17:45.283 回答