它是我的代码,如何将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
答案 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