2016-10-15 1 views
0

Ich lerne etwas Shell-Skripting mit der tcsh-Shell. Mein Programm sollte die Multiplikationstabelle für einen Bereich von 2 ersten Argumenten berechnen. Wenn das erste Argument größer als das zweite ist, sollte es von größer nach kleiner gedruckt werden. Aber statt dessen arbeitet er korrekt, wenn ich ihm den ersten Arg als den zweiten gebe. Aber während ich ihm das erste Argument kleiner gebe, habe ich den Fehler: "d: Undefinierte Variable".C-Shell-Problem mit undefinierter Variable

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 

Wenn ich wechsle, wenn und sonst (wird erster Teil verantwortlich für arg1 kleiner als arg2 sein) Es funktioniert gut für arg1 kleiner als arg2, aber nicht in der entgegengesetzten Situation mit „c: Nicht definiert Variable“ Fehler.

Können Sie mir bitte sagen, was fehlt mir?

+1

Änderung Ihrer "she-bang" Linie '#! /.../ Tcsh -vx' zu erklären, so dass Sie die Debug/Spur zu sehen. Dann können Sie möglicherweise sehen, welche Zeile das Problem verursacht. (setze den richtigen Pfad zu statt '/.../' natürlich). Viel Glück. – shellter

+0

Vielen Dank! Es war wirklich ein dummer Fehler: Ich habe vorher den Platz vergessen und "else" von der zweiten Schleife wurde in die erste Schleife gebracht. – Shrike

+0

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

Antwort

0

versuchen Variable Befehl Set

set var = value ; 
+0

Aber jetzt in dieser Zeile " – Shrike

+0

Ok, aber wenn ich es mache und ich werde Echo" $ d "drucken, bekomme ich nicht nur die nummer, aber auch eine art von datei (wie dokumente, musik, bilder etc) – Shrike

+0

keine idee:/tut mir leid für mich eingestellt arbeitete für c aber für d noch undefinierte variable !! –

Verwandte Themen