我提交了一个批处理作业:
sbatch --job-name="mybatchjob-false1" -o myoutfile_02aug2024-false1.txt myshllscrpt24_02aug2024.sh myscriptfun_01aug2024 false NA 1 /20jul2024 true NA 8 8 2 /02aug2024
其中 myshllscrpt24_02aug2024.sh 是一个非常标准的.sh 文件:
#!/bin/bash
#SBATCH -n 24 # <--- This job will require 24 cores
#SBATCH -N 1
#SBATCH -A genacc_q # <--- Run in the genacc_q Slurm account; this is the default account if none specified
#SBATCH --mail-type="ALL" # <--- Email your official FSU email address on all job events
#SBATCH -t 14-00:00:00 # <--- Kill this job after 14 days
#SBATCH --mem-per-cpu=4000M
#SBATCH -C "YEAR2015,intel"
module purge
module load matlab/2023b
matlab -batch "$1($2,'$3',$4,'$5',$6,'$7',$8,$9,$10,'$11')"
最后一行调用几个接受 10 个输入的函数之一(其中一个是 myscriptfun_01aug2024.m),因此 sbatch 命令正在调用以运行
myscriptfun_01aug2024(false,'NA',1,'/20jul2024',true,'NA',8,8,'/02aug2024')
其中 '/20jul2024' 是我从中加载输入文件的子文件夹,'/02aug2024' 是保存输出文件的子文件夹。我已检查此命令确实在交互式作业模式下运行。
sbatch命令导致失败,我检查了myoutfile_02aug2024-false1.txt:
{Unrecognized function or variable 'myscriptfun_01aug20240'.
}
由于某种原因,sbatch 命令似乎在函数名称末尾添加了“0”,导致失败。
我将非常感激所有关于哪里出了问题以及应该做什么的建议。
谢谢你!
本质上,sbatch 命令调用来运行
myscriptfun_01aug2024(false,'NA',1,'/20jul2024',true,'NA',8,8,'/02aug2024')
其中 '/20jul2024' 是我从中加载输入文件的子文件夹,'/02aug2024' 是保存输出文件的子文件夹。我已检查此命令确实在交互式作业模式下运行。
这里的问题是,bash 参数变量仅适用于个位数,即 $1 到 $9。因此,当您输入 $10 时,您将获得第一个参数,并在后面附加一个 0。
相反,使用
${10}
和${11}
。