我正在尝试运行这段PBS代码,其中我想在完成part1后运行第二部分,但由于某种原因,它在完成part1后没有执行part2。我如何才能一次执行第二部分?
#!/bin/bash -l
#PBS -N AOGC_Contest
#PBS -l walltime=10:00:00
#PBS -l mem=10gb
#PBS -J 0-2
cd /mypath
##module load java ##AN commented out
##module load gatk ##AN commented out
SNP=/mypath/file.vcf
TMPDIR=/mypath/Contest/data/test_tmpdir/
FASTA=/mypath/Contest/data/hg19.fasta
CONTAMINATION=/mypath/Contest/data/test_contamination/
POPFILE=/mypath/Contest/data/hg19_CHR_FIXED.vcf
BAMS=( /mypath//S05-F13-P01_C06A1ACXX-1-13.ReCal.sort.bam /mypath//S08-F10-P01_C06A1ACXX-2-13.ReCal.sort.bam /mypath//AOGC-02-0010_C0J43ACXX-4-13.ReCal.sort.bam )
SAMPS=( S05-F13-P01 S08-F10-P01 AOGC-02-0010 )
BAM=${BAMS[$PBS_ARRAY_INDEX]}
SAM=${SAMPS[$PBS_ARRAY_INDEX]}
#BAM=${BAMS[1]}
#SAM=${SAMPS[1]}
echo "$SAM"part1
java -jar GenomeAnalysisTK.jar \
-T SelectVariants \
-U ALLOW_SEQ_DICT_INCOMPATIBILITY \
-R ${FASTA} \
-V $SNP \
-o ${TMPDIR}/${SAM}_${PBS_ARRAY_INDEX}.vcf \
-nt 4 \
--excludeNonVariants \
--removeUnusedAlternates \
--keepOriginalAC \
--keepOriginalDP \
-sn ${SAM}part2
java -jar GenomeAnalysisTK.jar \
-T ContEst \
-U ALLOW_SEQ_DICT_INCOMPATIBILITY \
-I ${BAM} \
-R ${FASTA} \
--popfile ${POPFILE} \
--genotypes:VCF4 ${TMPDIR}/${SAM}_$PBS_ARRAY_INDEX.vcf \
-o ${CONTAMINATION}/contamination_${SAM}_${PBS_ARRAY_INDEX}.txt发布于 2016-08-06 07:38:40
与任何程序一样,当意图和事实之间存在一些差异时,shell脚本“无法工作”。在您的情况下,在我看来,变量没有按照您的预期进行设置。
$ SAMPS=( S05-F13-P01 S08-F10-P01 AOGC-02-0010 )
$ echo $SAMPS
S05-F13-P01如果您希望SAMPS包含整个字符串,包括空格,请引用它:
$ SAMPS='S05-F13-P01 S08-F10-P01 AOGC-02-0010'
$ echo $SAMPS
S05-F13-P01 S08-F10-P01 AOGC-02-0010(我不建议包含前导空格和尾随空格。当您使用该变量时,添加该变量非常容易。)
作为一种常规调试技术,$ bash -x scriptname将向您展示变量是如何展开的。您还可以在脚本中添加set -x和set +x,使其在有问题的区域变得更加冗长。
HTH。
https://stackoverflow.com/questions/38656218
复制相似问题