2017-10-10 73 views
-1

我想分配两个文件作为输入文件。下面一个例子:将文件分配给对方

directory1 
AB001.txt 
AB002.txt 
AB003.txt 
.... 

directory2 
AB001.fasta 
AB002.fasta 
AB003.fasta 
.... 

所以,我要遍历超过5000 * .txt文件与相应的* .fasta文件(总是相匹配的前缀)。所有* .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

使用带参数扩展的循环。

#! /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作为参数传递给该程序。