您希望将参数传递给我应该通过qsub执行的perl脚本。 所以我跑:
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脚本的不幸输出文件始终为空。
你有什么建议吗?哪里我错了?请帮忙
答案 0 :(得分:1)
根据所有文档,我可以找到-v
设置环境变量,因此您使用$ENV{i}
来获取500
。 (查看您自己的文档以确认。)
如果您想将arg实际传递给脚本,可以尝试使用
qsub ... Test.pl -i=500
但根据我的网络搜索,这可能仅适用于某些版本的qsub
。其他人则要求你制作一个帮助脚本(比如Test.sh
)
#!/bin/sh
Test.pl "-i=$i"
连同命令
qsub ... -v 'i=500' Test.sh
如果支持qsub ... Test.pl ...args...
并且您可以更改脚本,则最简单的解决方案是
qsub ... Test.pl 500
和
my ($i) = @ARGV;
答案 1 :(得分:0)
我终于得到了适用于PBRProfessional 10.4的解决方案。
有两种方法可以解决它:
第一个是以下
echo "perl /path/to/Test.pl -i 500" | qsub -l nodes=node06
第二个是两次使用
qsub -l nodes=node06 -v i=500 Test.pl
并通过$ ENV {i}
读取Test.pl中的参数