while read loop shell command
2
0
Entering edit mode
9.8 years ago
juncheng ▴ 220

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 • 3.7k views
ADD COMMENT
2
Entering edit mode
9.8 years ago
Vivek ★ 2.7k

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

ADD COMMENT
0
Entering edit mode

Thanks, seams working!

ADD REPLY
3
Entering edit mode
9.8 years ago
Ram 43k

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.

ADD COMMENT
0
Entering edit mode

Thanks, you both gave good suggestions.

ADD REPLY

Login before adding your answer.

Traffic: 2350 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6