SLURM阵列替换错误

时间:2019-09-16 19:50:47

标签: arrays bash slurm

以下批处理脚本旨在对文件数组运行功能:

#SBATCH --job-name="my_job"
#SBATCH --partition=long
#SBATCH --nodes=2
#SBATCH --ntasks=1
#SBATCH --mem=30G
#SBATCH --ntasks-per-node=4
#SBATCH --time=3-00:00:00
#SBATCH --export=ALL
#SBATCH --output=array_%A_%a.out  
#SBATCH --error=array_%A_%a.err

FILE=${FILES[$SLURM_ARRAY_TASK_ID]}
base=$( basename $1 .fasta)
echo ${FILE}
OUTFILE=~/data/${base}.afa

mnj -in ${${SLURM_ARRAY_TASK_ID}}  \
-out $OUTFILE

它返回以下错误:

/var/lib/slurm-llnl/slurmd/job512763/slurm_script: line 12:

: bad substitution

在命令行中,NUMFILES=${#FILES[@]}返回适当数量的文件,而echo $FILES返回预期的输出。

我找不到在没有FILE=${FILES[$SLURM_ARRAY_TASK_ID]}的文件目录中运行的任何SLURM数组示例。除了bash版本/语法差异之外,我不确定为什么会导致错误?

echo "${BASH_VERSION}"
4.3.48(1)-release

1 个答案:

答案 0 :(得分:0)

您的脚本没有shebang,因此使用默认的Shell对其进行解释,默认的Shell通常是shdash,它们不了解该语法。

尝试将#! /usr/bin/env bash添加为提交脚本的第一行。