'$'符号的语法错误;猎豹/猛击

时间:2017-10-27 08:34:40

标签: bash cheetah

我在运行Cheetah的脚本上工作;在某些时候有一些bash命令,我得到一个语法错误(“猎豹为这个模板生成的Python代码中的错误”)。

涉及的界限是:

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

语法错误出现在第一个“$”符号上。它昨天工作,所以我有点困惑......

整个代码用xml标签编写:

<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>

1 个答案:

答案 0 :(得分:1)

你必须屏蔽(用反斜杠转义)你要传递给bash的每个$符号,否则Cheetah会尝试解释它们:

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

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