将SLURM批处理命令行参数传递给R

问题描述:

我试图运行带有各种参数的SLURM sbatch命令,这些参数可以在R脚本中读取。当使用PBS系统时,我曾经写过qsub -v param1=x,param2=y(+其他系统参数,如内存要求等,以及由PBS读取的脚本名称),然后在R脚本中用x = Sys.getenv(‘param1’)读取它。将SLURM批处理命令行参数传递给R

现在我试图

sbatch run.sh --export=basePath=‘a’ 

随着run.sh:

#!/bin/bash 

cd $SLURM_SUBMIT_DIR 
echo $PWD 

module load R/common/3.3.3 

R CMD BATCH --quiet --no-restore --no-save runDo.R output.txt 

而且runDo.R:

base.path = Sys.getenv('basePath') 

print(base.path) 

脚本正在运行,但参数值不分配给base.path变量(它打印一个空字符串)。

+0

我只知道关于R所以请原谅我,如果它是不相关的,但如果你得到脚本的输出,你可以试试'cat'而不是' print'作为'print'的输出将以'“[1]”开始,并且将在路径中保留转义字符('“\\”'为'“\”')。 –

export参数必须传递给sbatch而不是run.sh脚本。

它应该是这样的:

sbatch --export=basePath=‘a’ run.sh