【发布时间】:2013-03-28 11:13:47
【问题描述】:
您好想将一个参数传递给我的 perl 脚本,该脚本应该通过 qsub 执行。 所以我跑了:
qsub -l nodes=node01 -v "i=500" Test.pl
在 Test.pl 中,我尝试以多种方式调用 i 参数:
use Getopt::Long;
$result = GetOptions ("i" => \$num);
open(FILE,">/data/home/FILEout.txt");
print FILE "$num\n";
print FILE "$ARGV[0]";
close(FILE);
不幸的是 perl 脚本的输出文件总是空的。
你有什么建议吗?我哪里错了?请帮忙
【问题讨论】:
-
这个
Test.pl:use Data::Dumper; open($FH,">/data/home/FILEout.txt") or die $!; local $Data::Dumper::Terse=1; local $Data::Dumper::Indent=0; print($FH Dumper(\@ARGV), "\n"); print($FH join(',', keys(%ENV)), "\n");的输出是什么? -
@ikegami 再次感谢您的帮助。您的 Test.pl 的输出如下:
PBS_NODEFILE,PBS_O_SHELL,PBS_O_SYSTEM,SSH_ASKPASS,PBS_O_WORKDIR,PBS_O_LANG,PBS_O_MAIL,PBS_O_PATH,LESSOPEN,PBS_JOBCOOKIE,PWD,LANG,USER,PBS_O_HOST,G_BROKEN_FILENAMES,LOGNAME,PBS_JOBID,SHLVL,INPUTRC,PATH,PBS_ENVIRONMENT,PBS_O_QUEUE,OMP_NUM_THREADS,PBS_QUEUE,HISTSIZE,PBS_O_HOME,PBS_MOMPORT,HOME,MAIL,PBS_O_LOGNAME,TZ,PBS_NODENUM,PBS_TASKNUM,NCPUS,HOSTNAME,_,LS_COLORS,SHELL,PBS_JOBNAME,PBS_JOBDIR,TMPDIR,ENVIRONMENT使用命令qsub -l nodes=node01 -v "i=500" Test.pl -
马铃薯毫无意义。
qsub的文档中是否有类似#!/bin/sh if [ "x" == "x$MYVAR" ] ; then echo "Variable is not set" else echo "Variable says: $MYVAR" fi的示例?如果是这样,如果您尝试(使用-v 'MYVAR=500')会发生什么?如果您将$MYVAR更改为$i(使用-v 'i=500')会怎样?