如何解决测试是否需要Linux环境模块的逻辑
我帮助维护一个 R 包,该包自动生成 shell 脚本,以便使用 Slurm 在远程服务器上运行 Rscript
。有一个 submit.sh
脚本模板,其中填充了用户在 R 函数中提供的参数。但是,某些系统配置了环境模块,因此在调用 module load R
之前,shell 脚本需要有一行 Rscript
。
是否有一些我可以从 R 中执行的逻辑来检测 module load R
是否必要,以便将行 module load R
包含在 shell 脚本中,条件是它是否必要?
链接到我们的 R 包的源代码:rslurmsubmit.sh
的模板:submit.sh.txt
解决方法
从 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
模块已经加载,使用它也是安全的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。