2013-04-22 45 views
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的正则表达式中,但我无法获得正确的正则表达式结果。提前致谢!

回答

0

有迹象表明,我跳了几件事情:

1)你做的和做报表不匹配(你有一个额外的“完成”)。

2)把单引号括在你的sed表达式中;括号被bash解释为一个子过程。

一个优秀的语法高亮编程文本编辑器对此有很大的帮助。

+0

但是,在这种情况下,$ NAME1表示firts文件名称,不会更改。但我有兴趣在$ NAME上应用REGEX策略...是的,有一个额外的“完成”存在。谢谢!我正在使用vim。 – 2013-04-22 03:26:37

+0

从答案中删除了关于'$ NAME'的注释;我忽略了这个定义。如果你在''上键入':语法',你会得到bash语法高亮;这给我看了额外的'完成'突出显示为红色。 – 2013-04-22 03:39:32

相关问题