set:变量名必须以字母开头

时间:2016-12-27 10:52:24

标签: terminal csh

它是我的代码,如何将k设置为小于j的17。 它给出了错误: set:变量名必须以字母开头。

#! /bin/csh -ef

    set j =  18
    while ($j <= 40)
    set k = $j-17
    set i = 18
    while ($i <= 40)
    set l = $i - 17
        echo $i $j|gmx mindist -f 10ns_bit_45deg_LC3-v2.xtc -s for_prod2_POPC_24LC3-45deg.tpr -n LC3_protein_index.ndx -xvg none -od distance_p$l-LC3p$k.xvg -o distance_p$l-LC3p$k.out
    #   echo 17 14|g_dist -f ../../combined_trr/comb_10micro_LC3_310_1136lipids_MDSIM$j.trr -s ../cgmdsim1_1mer_LC3_310K_1136lipids.tpr -n GLP_a286.ndx -xvg none -o dist_protein_POPC_traj$j.xvg 
    #   awk ' { print $1, $5 }' dist_glp_protein_POPC_traj$j.xvg >zaxisdist_glp_protein_POPC_traj$ju.xvg

@ j++
@ i++

    end

exit -1

3 个答案:

答案 0 :(得分:0)

我不确定您为什么会收到该特定错误消息

set: Variable name must begin with a letter.

csh的语法定义不是特别明确,解析器可能会变得混乱。

但问题在于

 set l = $i - 17

不会执行减法。正确的语法是:

@ l = $i - 17

另一个问题:您的脚本中有2 while行,但只有一行end - 如果您使用了一致的缩进,则会更容易找到错误。

答案 1 :(得分:0)

试试这个: @ k = $ j - 17 因为您使用减法运算所以必须使用@

答案 2 :(得分:0)

对于 tcsh ,我认为变量后面的空格是问题

set xyz ="asd" --> gives the same error 

set xyz="asd"  --> work all well