【发布时间】:2015-03-06 08:45:40
【问题描述】:
我正在尝试在不同的目录中执行一系列作业。我想将目录作为输入参数传递给作业。到目前为止,我了解到我可以使用环境变量作为向作业发送参数的一种方式。但问题是由于作业以并行方式运行,因此该变量的最后一个值将用于所有作业。让我们看看我的代码:
for i in "${arr[@]}"
do
export dir=$i
qsub myBashFile.sh
done
在我的工作中,我使用变量 dir 进行一些操作。我希望每个作业都使用自己的输入参数执行。 编辑:这是我的工作
#!/bin/sh
#
#
#PBS -N Brownie
#PBS -o test.output.txt
#PBS -e test.error.txt
#PBS -l walltime=2:00:00
#PBS -m n
#PBS -V dir
cd $dir
./run_mycode.sh
我知道这是不正确的,但我正在寻找另一种方法来保持 dir 的值不变并且独立地为所有作业提供唯一性。
我还尝试使用 sed 命令修改作业文件中的变量,如下所示:
sed "s/dir/"'$i'"/g" my_job.sh > alljobs/my_jobNew.sh
但是,dir 并没有放入 $i 的实际值,而是完全更改为 $i,这在 my_job.sh 中没有意义。
【问题讨论】: