2017-10-10 107 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作爲參數傳遞給該程序。