2016-12-27 5 views
-2

Es ist mein Code, wie k als 17 kleiner als j. Es gibt den Fehler: set: Variablenname muss mit einem Buchstaben beginnen.set: Variablenname muss mit einem Buchstaben beginnen

#! /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 
+1

Sie müssen in der richtigen Syntax für die Subtraktion suchen verwenden. Sie können 'k' oder' l' nicht so einstellen, wie Sie es versuchen. –

+1

Ist das csh oder bash? Wähle eine Shell und ein Tag aus und benutze es. Hinweis: Wenn Sie Ihre Ruhe schätzen, wählen Sie nicht csh. –

Antwort

0

Ich bin nicht sicher, warum Sie bekommen, dass bestimmte Nachricht Fehler

set: Variable name must begin with a letter. 

Syntax csh das ist nicht besonders gut definiert, und der Parser kann verwirrt werden.

Aber das Problem ist, dass

set l = $i - 17 

nicht Subtraktion durchführen. Die korrekte Syntax ist:

@ l = $i - 17 

Ein weiteres Problem: Sie haben 2 while Zeilen in Ihrem Skript, aber nur einen end entsprechenden - einen Fehler, der einfacher gewesen wäre, zu finden, wenn Sie konsequent Einzug benutzt haben.

0

Versuchen Sie folgendes: @ k = $ j - 17 Weil Sie Subtrahierenoperation verwenden, so dass Sie @

Verwandte Themen