我有以下脚本用slurm提交作业:
#!/bin/sh
#!/bin/bash
#SBATCH -J $3 #job_name
#SBATCH -n 1 #Number of processors
#SBATCH -p CA
nwchem $1 > $2
Run Code Online (Sandbox Code Playgroud)
第一个参数($ 1)是我的输入,第二个($ 2)我的输出,我想第三个($ 3)确实是我的工作名称.如果我喜欢这样,那么工作名称是'$ 3'.我怎样才能将作业名称作为脚本的参数?
谢谢
SBATCH指令被shell视为注释,并且不执行变量替换$3
.有几种行动方案:
选项1:-J
在命令行上传递 参数:
sbatch -J thejobname submission_script.sh input.data output.res
Run Code Online (Sandbox Code Playgroud)
选项2:通过传递脚本stdin
(取代位置参数$1
,$2
由名为的,等)
IN=input.data OUT=output.res NAME=thejobname <submission_script.sh sbatch
Run Code Online (Sandbox Code Playgroud)
选项3:编写包装器
#!/bin/bash
sbatch <<EOT
#!/bin/sh
#SBATCH -J $3 #job_name
#SBATCH -n 1 #Number of processors
#SBATCH -p CA
nwchem $1 > $2
EOT
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
submit.sh input.data output.red thejobname
Run Code Online (Sandbox Code Playgroud)
另请注意,第二个shebang(#!/bin/bash
)是无用的,并被(父)shell忽略.
归档时间: |
|
查看次数: |
3318 次 |
最近记录: |