Issue
I have a loop I am trying to construct. that is pulling files from different paths. I need to loop these together. Here is what I have:
#!/bin/bash
#SBATCH --mem=110g
#SBATCH --cpus-per-task=12
module load java/17.0.2
for bam in /PATH1/*.sorted.dmark.bam;
do
java -Xmx110g -jar /PATHtoTOOL/fgbio-2.0.0.jar AnnotateBamWithUmis \
-i bam \
-f /PATH2/*_L001_UMI.fastq.gz \ # This is where I need the secodary loop
-o bam.UMI.bam
done
Solution
Populate two arrays with the files, walk them by index:
#! /bin/bash
dmarks=(/PATH1/*.sorted.dmark.bam)
fastqs=(/PATH2/*_L001_UMI.fastq.gz)
if (( ${#dmarks[@]} != ${#fastqs[@]} )) ; then
echo Different number of files >&2
exit 1
fi
for (( i=0; i<${#dmarks[@]}; ++i)) ; do
dmark=${dmarks[i]}
fastq=${fastqs[i]}
java -Xmx110g -jar /PATHtoTOOL/fgbio-2.0.0.jar AnnotateBamWithUmis \
-i "$dmark" \
-f "$fastq" \
-o bam.UMI.bam
done
Answered By - choroba Answer Checked By - David Marino (WPSolving Volunteer)