bash - 直接给pbs脚本传参

标签 bash unix pbs qsub

有没有办法在提交作业之前直接将参数传递给.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 XXXXXX@XXX.edu

cd /scratch/XXXXXX/pass_test

./run_test $FILENUM

但这感觉有点靠不住。特别是,我想避免必须创建一个环境变量来处理这个问题。

最佳答案

qsub 实用程序可以从标准输入读取脚本,因此通过使用此处文档,您可以动态 即时创建脚本:

#!/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

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

#!/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

关于bash - 直接给pbs脚本传参,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094141/

相关文章:

python - 在 Airflow 中从一台服务器到另一台服务器的文件传输

bash - 当我的 qsub 作业在服务器上完成时,如何自动运行 bash 脚本?

python - 在没有实际作业文件的情况下提交 qsub 作业的语法?

通过 qsub 运行 R 脚本

svn - 在机器上找到所有颠覆工作副本

bash - 如何从 awk 的输入 FILENAME 变量中删除路径 - basename 是否可用?

bash - basename 命令未按预期工作

bash - 将 sed 反向引用传递给 base64 命令

bash - Shell 脚本将所有输出转储到一个文件

unix - 分割unix输出