2016-10-15 2 views
0

J'apprends des scripts shell en utilisant le shell tcsh. Mon programme doit calculer la table de multiplication pour la plage de 2 premiers arguments. Si le premier argument est plus grand que la seconde, il devrait l'imprimer du plus grand au plus petit. Mais au lieu de cela, il travaille correctement si je lui donne un premier argument plus grand que le second. Mais pendant que je lui donne un premier argument plus petit, j'ai l'erreur: "d: Undefined variable".Problème de shell C avec une variable indéfinie

if ($argv[1] > $argv[2]) then 
while ($argv[1] >= $argv[2]) 
    foreach y (1 2 3 4 5 6 7 8 9) 
     @ d = ($argv[1] * $y) 
     if ($d < 10)then 
      echo -n " $d " 
     else 
      echo -n "$d " 
     endif 
    end 
    echo "\n" 
    @ argv[1] -= 1 
end 
exit 0 
else 
while ($argv[1] <= $argv[2]) 
    foreach y (1 2 3 4 5 6 7 8 9) 
     @ c = ($argv[1] * $y) 
     if ($c < 10)then 
      echo -n " $c " 
     else 
      echo -n "$c " 
     endif 
    end 
    echo "\n" 
    @ argv[1] += 1 
end 
exit 0 
endif 

Si je passe si et d'autre (première partie sera responsable de arg1 plus petit que arg2) Il fonctionne très bien pour arg1 plus petit que arg2, mais pas en situation inverse avec « c: Undefined variable » erreur.

Pourriez-vous me dire ce qui me manque?

+1

changer votre "elle-bang" ligne '#! /.../ tcsh -vx' afin que vous puissiez voir le débogage/trace. Ensuite, vous pourrez peut-être voir quelle ligne est à l'origine du problème. (Mettez le chemin correct au lieu de '/.../' bien sûr). Bonne chance. – shellter

+0

Merci beaucoup! C'était vraiment une erreur stupide: j'ai oublié l'espace avant et "else" de la deuxième boucle a été pris à la première boucle. – Shrike

+0

https://www-uxsup.csx.cam.ac.uk/misc/csh.html – Kaz

Répondre

0

essayez de déclarer la variable par commande set

set var = value ; 
+0

Mais maintenant dans cette ligne " – Shrike

+0

Ok, mais quand je le fais et je vais imprimer echo" $ d "je ne reçois pas seulement le nombre, mais une sorte de fichier aussi (comme les documents, la musique, les images etc ..) – Shrike

+0

aucune idée:/désolé pour moi ensemble travaillé pour cas c mais pour d encore variable indéfinie !! –