直接将参数传递给pbs脚本

Sev*_*ess 10 unix bash qsub pbs

有没有办法在提交作业之前直接将参数传递给.pbs脚本?我需要遍历由不同数字指示的文件列表,并应用脚本来分析每个文件.

我能想出的最好成绩如下:

#!/bin/sh 

for ((i= 1; i<= 10; i++))
do
        export FILENUM=$i
        qsub pass_test.pbs
done
Run Code Online (Sandbox Code Playgroud)

其中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 XXXXXX@XXX.edu

cd /scratch/XXXXXX/pass_test

./run_test $FILENUM
Run Code Online (Sandbox Code Playgroud)

但这感觉有点不稳定.特别是,我想避免创建一个环境变量来处理这个问题.

C2H*_*5OH 9

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 XXXXXX@XXX.edu

cd /scratch/XXXXXX/pass_test

./run_test $i
EOS
done
Run Code Online (Sandbox Code Playgroud)

就个人而言,我会使用更紧凑的版本:

#!/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 XXXXXX@XXX.edu -
cd /scratch/XXXXXX/pass_test
./run_test $i
EOS
done
Run Code Online (Sandbox Code Playgroud)