Cleo_Z 发表于 2012-02-29 17:10

shell 中有临时变量么?

最近写了各种脚本,发现shell中没有临时变量。苦闷中。。。。
具体如下

文件utility
$cat utility
#!/sbin/sh
   _a()
{
   i=1
   length=$1
   while [ $i -le $length ]
   do
             i=`expr $i + 1`
   done
   }

文件use
$cat use
#!/sbin/sh
   .utility
   i=1
   while [ $i -le 100 ]
   do
      _a20
      i=`expr $i + 1`
   done
当调用_a结束时,i的值已经更改,在use中的i是21了。。
除了改掉变量不同名,没有其他方法了么?我试了local 不起作用。。。
想各位大神求教。。。

      

xxf_xia 发表于 2012-03-08 16:23

搭车同问。。。

to407 发表于 2012-03-08 18:40

养成好的编程习惯...不要随便取名变量i...都是c语言入门惹的祸....


在被调用函数里, 函数名前面我一般都加下划线.

Cleo_Z 发表于 2012-03-15 15:12

本帖最后由 Cleo_Z 于 2012-03-15 15:13 编辑

回复 3# to407


    弱弱地说一句,_i 也不能解决实际问题啊。。。。。
    没有临时变量这一说么?
    你调用的函数,你怎么知道人家用的什么变量啊。。。这个不能解决这个问题的。。。。。

doni 发表于 2012-03-16 09:51

应该叫局部变量吧

Cleo_Z 发表于 2012-03-16 09:56

回复 5# doni


   。。。。。饿。。是的饿。。。大侠。。请问知道有么?

doni 发表于 2012-03-16 12:43

回复 6# Cleo_Z


    原则上,我也建议用不同的变量名,即使在支持局部变量的编程语言中,也应该如此。

to407 发表于 2012-03-16 13:57

回复 4# Cleo_Z


    什么叫“怎么知道人家的函数名”。。。。函数名在下手之前不应该就定好了么。。。。再说。。。不要再用什么i啊j啊k什么的做有意义的变量了。。。

doni 发表于 2012-03-16 15:42

回复 8# to407


    4L的意思是:他只是调用人家写的函数,他只关心接口和参数,不关心函数的内部

to407 发表于 2012-03-16 15:49

回复 9# doni


    代码太烂的话无解,

    就算每次 自己用的变量初始应用的时候 先unset也没用,调用函数的时候都是不确定的。

    写这种脚本 一定要有一个约定的规范。。。。实在不行,调别人的代码前 先读一下
页: [1] 2
查看完整版本: shell 中有临时变量么?