免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2980 | 回复: 11
打印 上一主题 下一主题

shell 中有临时变量么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-29 17:10 |只看该作者 |倒序浏览
最近写了各种脚本,发现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
      _a  20
      i=`expr $i + 1`
   done
当调用_a结束时,i的值已经更改,在use中的i是21了。。
除了改掉变量不同名,没有其他方法了么?我试了local 不起作用。。。
想各位大神求教。。。

      

论坛徽章:
0
2 [报告]
发表于 2012-03-08 16:23 |只看该作者
搭车同问。。。

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2012-03-08 18:40 |只看该作者
养成好的编程习惯...不要随便取名变量i...都是c语言入门惹的祸....


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

论坛徽章:
0
4 [报告]
发表于 2012-03-15 15:12 |只看该作者
本帖最后由 Cleo_Z 于 2012-03-15 15:13 编辑

回复 3# to407


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

论坛徽章:
0
5 [报告]
发表于 2012-03-16 09:51 |只看该作者
应该叫局部变量吧

论坛徽章:
0
6 [报告]
发表于 2012-03-16 09:56 |只看该作者
回复 5# doni


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

论坛徽章:
0
7 [报告]
发表于 2012-03-16 12:43 |只看该作者
回复 6# Cleo_Z


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

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2012-03-16 13:57 |只看该作者
回复 4# Cleo_Z


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

论坛徽章:
0
9 [报告]
发表于 2012-03-16 15:42 |只看该作者
回复 8# to407


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

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2012-03-16 15:49 |只看该作者
回复 9# doni


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

    写这种脚本 一定要有一个约定的规范。。。。实在不行,调别人的代码前 先读一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP