我在运行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>
答案 0 :(得分:1)
你必须屏蔽(用反斜杠转义)你要传递给bash的每个$
符号,否则Cheetah
会尝试解释它们:
&& name=\$(echo '\$input.element_identifier'".phy" | cut -d _ -f 1)
&& number=\$(grep '/' '\$input.element_identifier'".phy" | wc -l)
等