Bash 带有'的语法错误$';签名猎豹/猛扑

Bash 带有'的语法错误$';签名猎豹/猛扑,bash,cheetah,Bash,Cheetah,我编写了一个运行猎豹的脚本;在某些时候,有一些bash命令,我得到了一个语法错误(“Cheetah为这个模板生成的Python代码中的错误”) 涉及的范围是: && name=$(echo '\$another_variable'".phy" | cut -d _ -f 1) 语法错误位于第一个“$”符号上。昨天起作用了,所以我有点困惑 整个代码都写在一个xml标记中: <command><![CDATA[ ln -s '$input' '$input

我编写了一个运行猎豹的脚本;在某些时候,有一些bash命令,我得到了一个语法错误(“Cheetah为这个模板生成的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>

您必须筛选(用反斜杠转义)每个要传递给bash的
$
符号,否则
猎豹
会尝试解释它们:

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

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

等等。

我不知道你在问什么。但看起来您正在尝试这样做:
name=${另一个变量%%\u*}
,不需要
echo
cut
。它似乎确实有效!我不再有这个错误了。但是第二个命令在第一个“$”上有完全相同的错误:
&&number=$(grep'/'\$input.element_identifier'''.phy“| wc-l)
。这是猎豹的一个问题,我不知道为什么会发生这种情况,因为它可以作为一个简单的bahs命令正常工作。
$
$(…)
上的错误是什么?然后,它似乎无法执行子shell。您可以尝试使用
`…`
而不是
$(…)
。您显示的代码是
bash
code,但不是
Cheetah
,那么我们如何帮助您呢?请给我们看更多的代码,至少几行
Cheetah
code。对不起,它现在已经编辑好了。它可以工作了,谢谢:)。我现在还有其他问题要解决,如果需要的话我会问另一个问题。