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 不起作用。。。
想各位大神求教。。。
搭车同问。。。 养成好的编程习惯...不要随便取名变量i...都是c语言入门惹的祸....
在被调用函数里, 函数名前面我一般都加下划线. 本帖最后由 Cleo_Z 于 2012-03-15 15:13 编辑
回复 3# to407
弱弱地说一句,_i 也不能解决实际问题啊。。。。。
没有临时变量这一说么?
你调用的函数,你怎么知道人家用的什么变量啊。。。这个不能解决这个问题的。。。。。 应该叫局部变量吧 回复 5# doni
。。。。。饿。。是的饿。。。大侠。。请问知道有么? 回复 6# Cleo_Z
原则上,我也建议用不同的变量名,即使在支持局部变量的编程语言中,也应该如此。 回复 4# Cleo_Z
什么叫“怎么知道人家的函数名”。。。。函数名在下手之前不应该就定好了么。。。。再说。。。不要再用什么i啊j啊k什么的做有意义的变量了。。。 回复 8# to407
4L的意思是:他只是调用人家写的函数,他只关心接口和参数,不关心函数的内部 回复 9# doni
代码太烂的话无解,
就算每次 自己用的变量初始应用的时候 先unset也没用,调用函数的时候都是不确定的。
写这种脚本 一定要有一个约定的规范。。。。实在不行,调别人的代码前 先读一下
页:
[1]
2