0
我需要執行我的evaluateParameters.pl Perl程序,爲此,我想創建一個shell腳本。從shell腳本中的獨特文件生成不同的文件名
#!/bin/bash
COVARIANCE=~/Desktop/ncRNA/CovarianceModels/rRNAs_cov/bitscores.rRNA.dat # First input FILE
BASEPATH='/Desktop/ncRNA/Data/Inputs/rRNAs/60/'
TRUEFILES=~/$BASEPATH/Infernal/*.table # Second input File
CONTROLFILES=~/$BASEPATH/RandomControl/Infernal/*.table # third input file
INPUTFILES=~/$BASEPATH/*.fasta # fourth input file
for i in $COVARIANCE
do
NAME1=`basename $i`
for t in $TRUEFILES
do
# i.e : 1dvex4_rRNA_cin.out.db.location.fasta.RF00001.cm.tab.table
NAME=`basename $t`
echo "Calculating the parameters to $NAME"
# I need modify $NAME to convert in: 1dvex4_rRNA.cin.out.db.location.fasta
FILER=$(echo $NAME | sed s/(.*\.fasta)\.(.*\.tab\.table)/\1/g)
# I need modify $NAME to convert in:
# 1dvex4_rRNA.cin.out.db.location.fasta.mutant.fasta.RF00001.cm.tab.table
FILEM=$(echo $NAME | sed s/(.*\.fasta\.)(.*\.tab\.table)/\1\.mutate\.fasta\2/g)
perl evaluateParameters.pl $i ~/$BASEPATH/Infernal/$NAME ~/$BASEPATH/RandomControl/Infernal/$FILEM ~/$BASEPATH/$FILER
echo "END!"
done
done
最後的代碼給我跟着警告:
Calculating the parameters to 10dvex1_rRNA_ce.out.db.location.fasta.RF00001.cm.tab.table.false.table.false.table.true.table.true.table.true.table .false.table
./obtainParameters.sh: command substitution: line 31: syntax error near unexpected token `('
./obtainParameters.sh: command substitution: line 31: `echo $NAME | sed s/(.*\.fasta)\.(.*\.tab\.table)/\1/g'
./obtainParameters.sh: command substitution: line 32: syntax error near unexpected token `('
./obtainParameters.sh: command substitution: line 32: `echo $NAME | sed s/(.*\.fasta\.)(.*\.tab\.table)/\1\.mutate\.fasta\2/g'
一些想法?我想這個錯誤是在$ NAME的正則表達式中,但我無法獲得正確的正則表達式結果。提前致謝!
但是,在這種情況下,$ NAME1表示firts文件名稱,不會更改。但我有興趣在$ NAME上應用REGEX策略...是的,有一個額外的「完成」存在。謝謝!我正在使用vim。 – 2013-04-22 03:26:37
從答案中刪除了關於'$ NAME'的註釋;我忽略了這個定義。如果你在''上鍵入':語法',你會得到bash語法高亮;這給我看了額外的'完成'突出顯示爲紅色。 –
2013-04-22 03:39:32