2017-10-27 16 views
1

私はCheetahを実行しているスクリプトで作業しています。ある時点でいくつかのbashコマンドがあり、構文エラーが発生します(「Cheetahがこのテンプレートに対して生成したPythonコードのエラー」)。

関与行は次のとおりです。

&& name=$(echo '\$another_variable'".phy" | cut -d _ -f 1) 

構文エラー非常に最初の「$」記号上にあります。

あなたが画面に持って
<command><![CDATA[ 
    ln -s '$input' '$input.element_identifier' && 

    BlastAlign -i '$input.element_identifier' 
    -m $advanced_option.m 
    #if $advanced_option.r != "" 
     -r $advanced_option.r 
    #end if 
    #if $advanced_option.x != "" 
     -x $advanced_option.x 
    #end if 
    -n $advanced_option.n 
    #if $advanced_option.s != 0 
     -s $advanced_option.s 
    #end if 

    && mkdir outputs 

    && name=$(echo '\$input.element_identifier'".phy" | cut -d _ -f 1) 

    && number=$(grep '/' '\$input.element_identifier'".phy" | wc -l) 

    && new_file=$name"_sp"$number".phy" 
    && mv '\$input.element_identifier'".phy" '$new_file' 
    && new_file2=$name"_sp"$number".nxs" 
    && mv '\$input.element_identifier'".nxs" '$new_file2' 
    && cp '$new_file' outputs/ 
    && cp '$new_file2' outputs/ 

    #if $fasta_out.value == True 
     && python $__tool_directory__/scripts/S01_phylip2fasta.py /outputs/'$new_file' outputs/$name"_sp"$number".fasta" 
    #end if 

]]></command> 
+0

私はあなたが求めているのかわからないんだけど。しかし、これをやろうとしているようです: 'name = $ {another_variable %% _ *}'、 'echo'と' cut'は必要ありません。 – janos

+0

それは本当にうまくいくようです!もうエラーはありません。しかし、2番目のコマンドは、最初の '$': '&& number = $(grep'/'' \ $ input.element_identifier '"。phy" | wc -l) 'とまったく同じエラーを返します。それはCheetahの問題です、私はなぜそれが起こっているのか分かりません。単純なbahsコマンドのようにうまく動作するからです。 – Micawber

+0

'$(...)'の '$'にエラーがありますか?それで、それはサブシェルを実行することができないようです。あなたは '$(...)'の代わりに '\' ... \ ''を使うことができます。 – janos

答えて

1

(バックスラッシュでエスケープ)したいすべての$記号:私は一種の混乱しているので、それは

全体のコードは、XMLタグでwrrapedさ...昨日働きましたそれらを解釈しようとCheetah他には、bashに渡す:

&& name=\$(echo '\$input.element_identifier'".phy" | cut -d _ -f 1) 

&& number=\$(grep '/' '\$input.element_identifier'".phy" | wc -l) 

など

+0

それは動作します、ありがとう:)。私は今解決するべき他のバグを持っている、私は必要に応じて別の質問をするだろう。 – Micawber

関連する問題