2

ジョブ配列内のジョブのインデックスをパラメーターとして別の bash スクリプトに渡そうとしています。

numSims=3 
numTreatments=6 # uses numTreatments top rows of parameters.csv
maxFail=10
j=1
while [ $j -le $numSims ];
do
    bsub -q someQueue -J "mySim[1-$numTreatments]%2" ./another_script.sh $LSB_JOBINDEX $j $maxFail
    let j=j+1
done

numTreatmentsここでの究極のアイデアは、1,... ,numSimsジョブ (シミュレーション)ごとに送信することです。一度に 2 つのジョブを実行したい ( %2)。出力の形式は XX_indexNumber_simNumber です。ここで、indexNumber は 1,... からnumTreatments、simNumber は 1,..., から実行されますnumSims

理想的には、このスクリプトの一部として送信されるすべてのジョブ ID が同じである必要があります。これはまだ正しく設定されていません。同じjものを持つすべてのジョブに個別のジョブ ID が割り当てられているためです。私の差し迫った問題は、another_script.sh が$LSB_JOBINDEX入力として認識されないことです。つまり、 $jand$maxFailが渡された最初の 2 つのパラメーターのみとして認識されます。の代わりに他の変数を入れても$LSB_JOBINDEX問題ありません。私は何を間違っていますか?


編集- 私が試したいくつかのこと: "$LSB_JOBINDEX"${LSB_JOBINDEX}%I、およびI=$LSB_JOBINDEX; bsub ... $I $j $maxFail

4

1 に答える 1

7

このリンクから:

上記の定義は、1 つのバッチ ジョブだけでなく、サブジョブ固有の環境変数 $LSB_JOBINDEX が 1 から 100 までの値を取得する 100 のバッチ ジョブを起動します。この変数は、各サブタスクが処理されるように、実際のジョブ起動コマンドで利用できます。

あなたの場合、これは変数$LSB_JOBINDEXがスクリプト内から利用可能であることを意味しますanother_script.sh。パラメータとして渡す必要はありませんが$LSB_JOBINDEX、スクリプトでアクセスするだけです。

于 2012-06-26T19:45:01.630 に答える