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
现在我想
- 读取文件的每一行
numbers.txt
- 每个数字代表目录中的一个文件sequences
- 从目录
db
中取出每个 *.fasta
文件
- 做点什么(在这种情况下,针对序列对每个数据库进行爆炸搜索)
numbers.txt
每行输出一个文件
这是我的尝试:
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
作为变量。
我有以下文件结构:
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
现在我想
- 读取文件的每一行
numbers.txt
- 每个数字代表目录中的一个文件sequences
- 从目录
db
中取出每个 - 做点什么(在这种情况下,针对序列对每个数据库进行爆炸搜索)
numbers.txt
每行输出一个文件
*.fasta
文件
这是我的尝试:
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
作为变量。