while read loop shell command
1
0
Entering edit mode
7.3 years ago
juncheng ▴ 200

I'm writing a shell stript 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.0k views
ADD COMMENT
1
Entering edit mode

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

ADD REPLY
0
Entering edit mode

Thanks, seams working!

ADD REPLY
3
Entering edit mode
7.3 years ago
Ram 34k

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: 1942 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