将参数传递给通过qsub执行的perl脚本

时间:2013-03-28 11:13:48

标签: perl pbs qsub torque

您希望将参数传递给我应该通过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脚本的不幸输出文件始终为空。

你有什么建议吗?哪里我错了?请帮忙

2 个答案:

答案 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中的参数