以下批处理脚本旨在对文件数组运行功能:
#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
答案 0 :(得分:0)
您的脚本没有shebang,因此使用默认的Shell对其进行解释,默认的Shell通常是sh
或dash
,它们不了解该语法。
尝试将#! /usr/bin/env bash
添加为提交脚本的第一行。