红联Linux门户
Linux帮助

shell编程问题

发布时间:2010-08-19 22:34:52来源:红联作者:mark_honeywell
我在学习中写了下面的一个.sh文件:
#!/bin/bash/
hello="var1"
echo $hello
functiong func1{
local hello="var2"
echo $hello
}
func1
echo $hello
执行后是以下结果:
[attach]31844[/attach]
大家帮帮忙!
文章评论

共有 53 条评论

  1. hanxuan 于 2013-06-23 07:41:02发表:

    我发现大部分都是新手

  2. birdcool 于 2013-06-08 10:45:36发表:

    非常有用的资料。

  3. mm10261026 于 2012-12-14 13:44:44发表:

    dddddddddddddddd

  4. mhx20251005 于 2012-10-04 12:21:18发表:

    新手飘过

  5. wumengtong 于 2012-10-03 18:03:36发表:

    xuexi le

  6. 行空天马 于 2012-08-24 13:49:36发表:

    表示压力好大 学的还要好多

  7. smallming 于 2012-08-21 22:48:39发表:

    有问题

  8. 胶头滴管3 于 2012-08-21 12:04:08发表:

    #!/bin/bash/
    hello="var1"
    echo $hello
    functiong func1{
    local hello="var2"
    echo $hello
    }
    func1
    echo $hello



    上面的错误是在你定义的函数上 少了一对括号
    #!/bin/bash/
    hello="var1"
    echo $hello
    function func1(){
    local hello="var2"
    echo $hello
    }
    func1
    echo $hello


    我也是新手,有错误的地方还请大家斧正
    如果没有括号,只能说是定义的一个命令集,而上面例子的意思明显是想说明local ,本地变量与环境变量之间的差别。
    运行的结果为
    var1
    var2
    var1
    我是在ubuntu上用bash跑的
    我的理解是这样的:在脚本中定义子函数,若使用环境变量,将会影响环境变量值,而加上local定义,说明hello在子函数中是本地变量,在函数func1调用结束后,作为本地变量的hello生命期就结束了,下面一个hello就是脚本中第一个定义的hello,即var1.所以输出为var1 var2 var1
    如果不加括号,仅作为命令集合的func1与原脚本是同一个父shell程序,就出现了定义了同名 不同类型的问题了

  9. 随意多好 于 2012-08-03 15:02:04发表:

    第一行就没写对,应该是没有空格

  10. guoczcq 于 2012-05-29 11:48:19发表:

    学习

  11. Aaron509 于 2012-05-29 11:38:40发表:

    路过

  12. bxl888 于 2012-05-03 18:39:41发表:

    好,顶一个!!!

  13. bxl888 于 2012-05-03 18:38:53发表:

    好,顶一个!!!

  14. 迷你版vcxz 于 2012-01-21 15:17:17发表:

    飘过……

  15. love梦 于 2012-01-14 23:06:03发表:

    函数

  16. 不想上天的狼 于 2012-01-05 10:30:33发表:

    :0wl;l1

  17. freebigfish 于 2012-01-04 17:41:23发表:

    不解

  18. haoge512 于 2011-10-31 22:10:50发表:

    看看来了

  19. mytang 于 2011-10-15 13:16:35发表:

    路过,。。。

  20. every_why 于 2011-07-22 12:35:16发表:

    学习中

  21. fire312923253 于 2011-07-21 15:32:20发表:

    今天看懂了

  22. fire312923253 于 2011-07-18 13:27:07发表:

    看不懂

  23. fire312923253 于 2011-07-15 13:08:31发表:

    不懂

  24. zhouyh_789 于 2011-06-16 17:20:27发表:

    看不懂哦?!菜???~

  25. bole08 于 2011-05-21 18:23:29发表:

    没看懂???

  26. liduo123 于 2011-04-06 21:46:28发表:

    不懂

  27. 372148 于 2011-04-02 09:52:57发表:

    我也是新手,来学一下!

  28. 372148 于 2011-04-01 11:37:02发表:

    学习以下

  29. QL8533 于 2011-03-29 18:24:58发表:

    看看[img][/img]

  30. 多多小怪 于 2011-03-29 17:59:58发表:

    新手

  31. ernest!! 于 2011-03-29 15:18:57发表:

    新手 不加注释看不明白 @!@@@

  32. dmlyjr 于 2011-03-28 18:01:55发表:

    local 这个关键字 还从来没有用过.

  33. qamallan 于 2011-03-28 13:46:48发表:

    不错,支持

  34. zgwjxel 于 2011-02-26 01:52:28发表:

    10# wixi

  35. zgwjxel 于 2011-02-26 01:52:19发表:

    顶!!!!!!!!!!!1

  36. xmengming 于 2011-02-24 22:12:50发表:

    偶也是新手

  37. pzh2010 于 2011-02-18 12:46:47发表:

    感谢分享

  38. s.d 于 2011-02-11 22:43:41发表:

    先学习学习

  39. naruto01 于 2011-02-11 22:10:18发表:

    引用:
    我在学习中写了下面的一个.sh文件:
    #!/bin/bash/
    hello="var1"
    echo $hello
    functiong func1{
    local hello="var2"
    echo $hello
    }
    func1
    echo $hello
    执行后是以下结果:
    31844
    大 ...
    mark_honeywell 发表于 2010-8-19 22:34

    http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80#Shell.E9.87.8C.E7.9A.84.E5.87.BD.E6.95.B0[code]functionname()
    {
    # inside the body $1 is the first argument given to the function
    # $2 the second ...
    body
    }[/code]

  40. 花开花败2011 于 2011-02-11 19:30:57发表:

    谢谢分享