Sbatch:将作业名称作为输入参数传递

Sbatch: pass job name as input argument

我有以下脚本来使用 slurm 提交作业:

#!/bin/sh
#!/bin/bash
#SBATCH -J  #job_name 
#SBATCH -n 1 #Number of processors
#SBATCH -p CA 

nwchem  > 

第一个参数 ($1) 是我的输入,第二个参数 ($2) 是我的输出,我希望第三个 ($3) 是我的工作名称。如果我这样做,作业名称是“$3”。我怎样才能继续将作业名称作为脚本的参数?

谢谢

SBATCH 指令被 shell 视为注释,它不会对 </code> 执行变量替换。有几种做法:</p> <p>选项 1:在命令行上传递 <code>-J 参数:

sbatch -J thejobname submission_script.sh input.data output.res

选项 2:通过 stdin 传递脚本替换位置参数(</code>、<code> 等)

IN=input.data OUT=output.res NAME=thejobname <submission_script.sh sbatch 

选项 3:编写包装器

#!/bin/bash
sbatch <<EOT
#!/bin/sh
#SBATCH -J  #job_name 
#SBATCH -n 1 #Number of processors
#SBATCH -p CA 

nwchem  > 
EOT

并像这样使用它:

submit.sh input.data output.red thejobname

另请注意,第二个 shebang (#!/bin/bash) 是无用的并被(父级)忽略 shell。