运行 在其他文件中找到具有不同变量的作业脚本

run job script with different variables found in other files

假设我在 txt 文件 (var.txt) 中有以下变量列表:

AAA
ABC
BBB
CCC

以下 R 脚本 (script.R),其中 x 是 var.txt 中的一个变量:

print(x)

和以下 HPC slurm 作业脚本 (job.sh):

#!/bin/bash
#SBATCH --job-name test
#SBATCH --ntasks 8
#SBATCH --time 04:00
#SBATCH --output out
#SBATCH --error err

Rscript script.R

我如何运行 job.sh 脚本按顺序执行 4 次,每次在 script.R 中使用不同的变量?

预期输出: 4 个 slurm 作业 script.R 打印 AAA、ABC、BBB 和 CCC。

感谢您的帮助

这是适合 job array 的典型工作负载。使用这样的提交脚本

#!/bin/bash
#SBATCH --job-name test
#SBATCH --ntasks 8
#SBATCH --time 04:00
#SBATCH --output out
#SBATCH --error err
#SBATCH --array=0-3

readarray -t VARS < var.txt
VAR=${VARS[$SLURM_ARRAY_TASK_ID]}
export VAR

Rscript script.R

script.R正在

print(Sys.getenv("VAR"))

您将获得一个包含四个作业的作业数组,每个作业 运行 R 脚本具有不同的环境变量值 VAR,取自 var.txt 文件。