2016-10-15 43 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仍然未定义的变量!! –