This is a test version of Biostars. For the public version, visit https://www.biostars.org.
while read loop shell command

I'm writing a shell script for alignment.

Where sample ID stored in SampleID.txt, for this I use a example SRR534526, fastq file names are SRR534526_1.fastq.gz SRR534526_2.fastq.gz

My command:

while read -r line; 
  do name=$line; 
  # Rum alignment using STAR, this gives SAM file
  /software/STAR/STAR_2.3.1z12/STAR --genomeDir ~/Homo_sapiens_assembly19_STAR/ --readFilesIn $name_1.fastq.gz $name_2.fastq.gz --readFilesCommand zcat --runThreadN 20 --outFileNamePrefix $name
  cd ..
done < 'SampleID.txt'

Error report: gzip: .fastq.gz: No such file or directory

Apparently, the problem is $name_1.fastq.gz is not recognized as SRR534526_1.fastq.gz

Could anyone help? Thanks.

bash

2 answers

Try using quotes for _1.fastq.gz like $sample"_1.fastq.gz"

Thanks, seams working!

It's a good practice to always enclose bash variables within {}, like, in your case, ${name}_1.fastq.gz

By following this, you make it explicit which part of your string is a variable name and which part is the actual literal string.

Thanks, you both gave good suggestions.

Log in to answer this question.