首页 > 解决方案 > 语法错误:预期的操作数(错误标记是“))”)

问题描述

我正在尝试使用 bwa mem 将我的样本与参考基因组对齐。

我有超过 300 个样本,我从元数据文件创建了一个索引

但有些东西并没有真正起作用!

我正在使用的循环是这个(在 SLURM 中)

#SBATCH --export=ALL # export all environment variables to the batch job
#SBATCH -D . # set working directory to .
(...)

# Commands

module load BWA/0.7.17-foss-2018a
module load SAMtools/1.3.1-foss-2018a
module load BCFtools/1.6-intel-2017b

reference=/gpfs/ts0/home/jn378/mussels/snp/genomes/gallo_v6.snail.svg
input_reads=/gpfs/ts0/home/jn378/mussels/snp/3.fastp
align=/gpfs/ts0/home/jn378/mussels/snp/5.bam-files
metadata=/gpfs/ts0/home/jn378/mussels/snp/SNP-array-metadata.txt
metadata=/gpfs/ts0/home/jn378/mussels/snp/SNP-array-metadata.txt


read1=( `cat $metadata | cut -f 4` )
read1_array=$input_reads/${read1[(($SLURM_ARRAY_TASKID))]}

read2=( `cat $metadata | cut -f 5` )
read2_array=$input_reads/${read2[(($SLURM_ARRAY_TASKID))]}

outbam=( `cat $metadata | cut -f 1` )
out=${outbam[(($SLURM_ARRAY_TASKID))]}

echo "reference" $reference
echo "read1" $read1_array
echo "read2" $read2_array
echo "alignment" $align/${out}_unsorted.raw.sam

#### Align with bwa mem ###

####bwa mem -t 4 $reference $read1_array $read2_array > ${align}/${out}_unsorted.raw.sam

但我不断收到此错误:

bwa.sh:第 34 行:(()):语法错误:预期操作数(错误标记是“))”)

有人可以帮我解决这个问题吗?

非常感谢!

标签: alignmentslurm

解决方案


您收到的错误消息

bwa.sh: line 34: (()): syntax error: operand expected (error token is "))")

是因为您要使用的变量是命名的SLURM_ARRAY_TASK_ID,而不是SLURM_ARRAY_TASKID. 后者未设置,表达式扩展为

read1_array=$input_reads/${read1[(())]}

哪个 Bash 无法解析。

所以替换SLURM_ARRAY_TASKIDSLURM_ARRAY_TASK_ID应该没问题。

另请注意,不需要双括号,如果路径变量包含特殊字符,双引号总是一个好主意,因此您可以编写

read1_array="$input_reads/${read1[$SLURM_ARRAY_TASK_ID]}"

推荐阅读