簡體   English   中英

bash 腳本 - 遍歷文件並添加到不同的變量

[英]bash script - loop through files and add to different variables

我有名稱如下的文件:

0195_R1.fastq
0195_R2.fastq
0196_R1.fastq
0196_R2.fastq
0197_R1.fastq
0197_R2.fastq

等等。

我需要為每對文件運行一個軟件(R1 和 R2 彼此對應),例如:

bowtie2 -x index_files -1 0195_R1.fastq -2 0195_R2.fastq -S 0195_output.sam

對於多對,我必須多次運行。 所以我嘗試使用 for 循環來做一個 bash 腳本,但我沒有成功。 另外,我不知道如何按順序重命名輸出。

我嘗試了以下方法:

for R1 in $FQDIR/*_R1.fastq; do
for R2 in $FQDIR/*_R2.fastq; do

    bowtie2 -x index_files -1 $R1 -2 $R2 -S $N_output.sam

done
done

我該怎么辦?

如果您遍歷所有 R1 和 R2 文件,您將對所有可能的數據文件對運行bowtie 如果我理解正確,那不是您想要的-您只想處理相應的對。

為此,僅循環 R1 文件,並嘗試為每個文件找到相應的 R2 文件:

#!/bin/bash
fqdir=...
for r1 in "$fqdir"/*_R1.fastq; do
    r2=${r1%_R1.fastq}_R2.fastq
    if [[ -f $r2 ]] ; then
        bowtie2 -x index_files -1 "$r1" -2 "$r2" -S "$N"_output.sam
    else
        echo "$r2 not found" >&2
    fi
done

我不確定$N代表什么。 也許你可以用$r1代替?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM