有没有办法在提交作业之前直接将参数传递给 .pbs 脚本?我需要遍历由不同数字表示的文件列表,并应用脚本来分析每个文件。
我能想出的最好的是以下内容:
#!/bin/sh
for ((i= 1; i<= 10; i++))
do
export FILENUM=$i
qsub pass_test.pbs
done
其中 pass_test.pbs 是以下脚本:
#!/bin/sh
#PBS -V
#PBS -S /bin/sh
#PBS -N pass_test
#PBS -l nodes=1:ppn=1,walltime=00:02:00
#PBS -M [email protected]
cd /scratch/XXXXXX/pass_test
./run_test $FILENUM
但这感觉有点不稳定。特别是,我想避免必须创建一个环境变量来处理这个问题。
最佳答案
qsub
实用程序可以从标准输入读取脚本,因此通过使用 here 文档,您可以动态地动态创建脚本:
#!/bin/sh
for i in `seq 1 10`
do
cat <<EOS | qsub -
#!/bin/sh
#PBS -V
#PBS -S /bin/sh
#PBS -N pass_test
#PBS -l nodes=1:ppn=1,walltime=00:02:00
#PBS -M [email protected]
cd /scratch/XXXXXX/pass_test
./run_test $i
EOS
done
就个人而言,我会使用更紧凑的版本:
#!/bin/sh
for i in `seq 1 10`
do
cat <<EOS | qsub -V -S /bin/sh -N pass_test -l nodes=1:ppn=1,walltime=00:02:00 -M [email protected] -
cd /scratch/XXXXXX/pass_test
./run_test $i
EOS
done
关于bash - 直接传参数给pbs脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10094141/