bash: 读取时嵌套 & for file in - 无输出

bash: nested while read & for file in - no output

我有以下文件结构:

db/organism1.fasta
db/organism1.fasta.nhr
db/organism1.fasta.nin
db/organism1.fasta.nsq
db/organism2.fasta
db/organism2.fasta.nhr
db/organism2.fasta.nin
db/organism2.fasta.nsq
sequences/abc123.faa
sequences/def456.faa
numbers.txt

numbers.txt

abc123
def456

现在我想

  1. 读取文件的每一行numbers.txt - 每个数字代表目录中的一个文件sequences
  2. 从目录 db
  3. 中取出每个 *.fasta 文件
  4. 做点什么(在这种情况下,针对序列对每个数据库进行爆炸搜索)
  5. numbers.txt
  6. 每行输出一个文件

这是我的尝试:

while read line
   do for file in db/*.fasta
      do tblastn -db $file -query sequences/$line.faa -evalue 1e-10 -outfmt 7 >>$line_blastn.txt
   done
done<numbers.txt

但是没有正在写入文件。为什么?

$line_blastn 被视为 一个 变量。由于该变量从未被赋予任何值,输出文件将只是 .txt。以点开头的文件隐藏在 Linux 和 Max OS 中,因此您看不到输出文件。

写入 ... >> "${line}_blastn.txt" 以仅使用 line 作为变量。