【发布时间】:2014-06-02 18:58:12
【问题描述】:
我正在尝试运行一个名为 BLASTP 的生物程序,它接收两个字符串(代码中的 fasta_GWIDD 和 fasta_UNIPROT)并比较它们。我遇到的问题是在代码中使用了 echo/system。谁能建议我错过了什么?
for(i=0;i<index1;i++)
{
sprintf(fasta_GWIDD,">%s\\n%s\n",fasta_name1[i],fasta_seq1[i]);
setenv("GwiddVar", fasta_GWIDD, 1) ;
sprintf(fasta_UNIPROT,">%s\\n%s\n",fasta_name2[i],fasta_seq2[i]);
setenv("UniprotVar", fasta_UNIPROT, 1) ;
system("blastp -query <(echo -e $GwiddVar) -subject<(echo -e $UniprotVar)");
}
错误是:
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `blastp -query <(echo -e $GwiddVar) -subject<(echo -e $UniprotVar)'
【问题讨论】:
-
首先让
system的参数语法被你的shell 接受。 -
假设 $GwiddVar=">P10747_1\nMLRLLLALNLFPSIQVTGN" 和 $UniprotVar=">P10747_2\nMLRLLLALNLFPSIQVTGN"。从终端/命令行运行时,以下命令可以正常工作: blastp -query P10747_1\nMLRLLLALNLFPSIQVTGN") -subject P10747_2\nMLRLLLALNLFPSIQVTGN");