sbatch提交批处理任务时函数名被追加0导致执行失败求助
问题原因分析
报错的核心是Bash对位置参数的解析逻辑:在Bash中,直接使用$10这种写法时,会被解析为$1(第一个位置参数,即myscriptfun_01aug2024)拼接字符0,而非第10个位置参数。同理$11会被解析为$1拼接字符1,这就导致Matlab实际收到的函数名变成了myscriptfun_01aug20240,自然无法识别。
你的Shell脚本最后一行:
matlab -batch "$1($2,'$3',$4,'$5',$6,'$7',$8,$9,$10,'$11')"
这里的$10和$11都不符合Bash的位置参数引用规范,是导致问题的直接原因。
解决建议
- 修正位置参数引用格式:对于第9个及以后的位置参数,必须用
${n}的格式包裹,修改后的Matlab调用行应为:matlab -batch "$1($2,'$3',$4,'$5',$6,'$7',$8,$9,${10},'${11}')" - 核对参数数量匹配:你提到Matlab函数
myscriptfun_01aug2024.m需要10个输入参数,但当前sbatch命令传递的参数中,/02aug2024是第11个位置参数(函数名是第1个),而你预期的调用里只有9个输入参数。建议同步核对:- 确认Matlab函数实际需要的参数数量
- 调整sbatch命令传递的参数,确保Shell脚本传递给Matlab的参数数量与函数定义一致
内容的提问来源于stack exchange,提问作者John Kim
相关产品推荐
相关产品推荐

