gpt4 book ai didi

linux - 如何将参数传递给作业并以并行方式保持不变

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:02 27 4
gpt4 key购买 nike

我正在尝试在不同目录中执行一系列作业。我想将目录作为输入参数传递给作业。到目前为止,我了解到我可以使用环境变量作为向作业发送参数的方式。但问题是,由于作业以并行方式运行,因此该变量的最后一个值将用于所有作业。让我们看看我的代码:

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

但不是输入 $i 的实际值,dir 完全更改为 $i,这在 my_job.sh 中是没有意义的。

最佳答案

您是否尝试过将目录作为 command_args 传递,如 manpage 中所述qsub(1)?那将是:

for i in "${arr[@]}"
do
qsub myBashFile.sh -- "$i"
done

您应该能够在 myBashFile.sh 中以 $1 的形式访问它。

关于linux - 如何将参数传递给作业并以并行方式保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com