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?
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
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
https://www-uxsup.csx.cam.ac.uk/misc/csh.html – Kaz