0

こんにちは、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 スクリプトの出力ファイルは常に空です。

何か提案はありますか?どこが間違っていますか?助けてください

4

2 に答える 2

1

-vすべてのドキュメントによると、環境変数のセットを見つけることができるので$ENV{i}、 get に使用します500。(ご自身のドキュメントで確認してください。)


実際に引数をスクリプトに渡したい場合は、次を使用してみてください

qsub ... Test.pl -i=500

しかし、私の Web 検索に基づくと、それは一部のバージョンの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;
于 2013-03-28T11:18:21.690 に答える
0

私はついに PBRProfessional 10.4 で動作するソリューションを手に入れました。

それを解決するには2つの方法があります:

一つ目は以下

echo "perl /path/to/Test.pl -i 500" | qsub -l nodes=node06

2つ目は2回使用です

qsub -l nodes=node06 -v i=500 Test.pl

$ENV{i}を介してTest.plのパラメータを読み取ります

于 2013-03-28T21:12:11.667 に答える