【发布时间】:2012-06-26 17:36:33
【问题描述】:
我正在尝试将作业数组中的作业索引作为参数传递给另一个 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
这里的最终想法是为 1,...,numTreatments,numSims 工作(模拟)中的每一个提交。我想要一次运行两个作业 (%2)。输出的格式为 XX_indexNumber_simNumber,其中 indexNumber 从 1,...,numTreatments 开始,simNumber 从 1,...,numSims 开始。
理想情况下,作为此脚本的一部分提交的所有内容都应具有相同的作业 ID。这还没有正确设置,因为所有具有相同 j 的作业都被分配了一个不同的作业 ID。 我的直接问题是 another_script.sh 没有将 $LSB_JOBINDEX 识别为输入 - 它将 $j 和 $maxFail 视为第一个也是唯一两个传递的参数。 当我将一些其他变量放入时$LSB_JOBINDEX的地方,没问题。我做错了什么?
编辑 - 我尝试过的一些事情:"$LSB_JOBINDEX"、${LSB_JOBINDEX}、%I 和 I=$LSB_JOBINDEX; bsub ... $I $j $maxFail
【问题讨论】:
-
我看不到
$LSB_JOBINDEX的设置位置。由于它是空的且未引用,就好像它根本不存在,这与您报告的行为一致。 -
好吧,那么由于某种原因它不是。无论如何,我建议在它和其他变量周围加上引号。
-
用我尝试过的一些替代方法更新了问题。
-
我没有使用
bsub的经验,但从您发送的链接来看,$LSB_JOBINDEX似乎是通过环境进行通信的,并且可以从 在新工作中访问.您是否尝试从another_script.sh内部访问$LSB_JOBINDEX,而不将其作为参数传递?