2016-10-15 70 views
0

我正在學習一些使用tcsh shell的shell腳本。 我的程序應該計算2個第一個參數範圍的乘法表。如果第一個參數比第二參數大,它應該從大到小打印出來。但是,如果我給他的第一個參數比第二個更大,那麼他會正確地工作。但是,當我給他第一個參數較小時,我有:「d:未定義的變量」錯誤。未定義變量的C shell問題

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 

如果我切換如果和其他人(第一負責ARG1 ARG2相比較小部分),它工作正常比ARG2 ARG1小,但不是在相反的情況與「C:未定義變量」錯誤。

你能告訴我我錯過了什麼嗎?

+1

改變你的「她 - 砰」行'#!/...../ tcsh的-vx'所以你可以看到調試/跟蹤。然後,您可能會看到哪條線路導致問題。 (當然,把正確的路徑替換爲'/.../')。祝你好運。 – shellter

+0

非常感謝!這真是一個愚蠢的錯誤:在此之前我忘記了空間,第二個循環中的「else」被帶到了第一個循環。 – Shrike

+0

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

回答

0

嘗試通過set命令聲明變量

set var = value ; 
+0

但現在在這一行「 – Shrike

+0

好吧,但是當我這樣做,我會打印回聲」$ d「我沒有得到只有數字,但也有一些類型的文件(如文件,音樂,圖像等) – Shrike

+0

不知道:/對不起 爲我設置工作的情況下,但爲D仍然未定義的變量!! –