我想将两个文件分配为输入文件。这是一个例子:
directory1
AB001.txt
AB002.txt
AB003.txt
....
directory2
AB001.fasta
AB002.fasta
AB003.fasta
....
所以,我想循环使用相应的* .fasta文件(总是带有匹配的前缀)的5000多个* .txt文件。应对所有* .txt文件执行的命令是:
program -i1 AB001.txt -i2 AB001.fasta > output AB001.aln
program -i1 AB002.txt -i2 AB002.fasta > output AB002.aln
program -i1 AB003.txt -i2 AB003.fasta > output AB003.aln
.
.
.
如何使用shell脚本执行此操作。我仍然是一个新手,但我想了解更多有关简单shell脚本的知识,当然我想使用循环,这样我就不必手动为每个文件执行命令。
答案 0 :(得分:0)
使用带参数扩展的循环。
#! /bin/bash
for txt in directory1/*.txt ; do
name=${txt##*/} # Delete up to the last slash.
name=${name%.txt} # Remove `.txt` at the end.
fasta=directory2/$name.fasta
program -i1 "$txt" -i2 "$fasta" > ouptut "$name".aln
done
请注意,> output AB001.aln
会将程序的输出重定向到名为output
的文件,并将AB001.aln
作为参数传递给程序。