0

我帮助维护一个 R 包,它自动生成 shell 脚本,以便使用 SlurmRscript在远程服务器上运行。有一个submit.sh脚本模板,其中填充了用户在 R 函数中提供的参数。module load R但是,有些系统配置了环境模块,因此在调用 shell 脚本之前需要有该行Rscript

是否有一些我可以从 R 中执行的逻辑来检测是否module load R有必要将该行module load R包含在 shell 脚本中,以是否有必要为条件?

链接到我们的 R 包的源代码:rslurm
模板submit.shsubmit.sh.txt

4

1 回答 1

1

从 shell 脚本中,您可以检查是否module定义了 shell 函数,然后检查R模块是否存在,在这种情况下应尝试加载此模块:

type module >/dev/null 2>&1
if [ $? -eq 0 ] && module is-avail R; then
    module load R
fi

如果R模块已经加载,该module load命令将不执行任何操作。所以即使R模块已经加载,使用它也是安全的。

于 2021-08-01T09:13:41.860 回答