您的位置:首页 > 运维架构 > Shell

函数调用与名称空间

2009-03-01 18:23 507 查看
 #!/usr/bin/env bash
myvar="hello"
function myfunc()
{
    myvar="one two three"
    for x in $myvar
    do
        echo $x
    done
}
myfunc
echo $myvar $x

 

我写的第一个bash程序。第一次在函数定义前没有加关键字function,也不知道该如何去调用函数。后来在网上搜点资料才弄明白,要加上function关键字。进入其所在目录直接./filename就可以执行。

 

从中我们可以看出,函数中所声明的变量都是全局变量(环境变量),它们并不随着函数的执行完成而注消。这对一个系统来讲并不是件好事。这是bash默认的属性,我们可以显示的指明它的属性,即关键字:local

 

修改版:

 #!/usr/bin/env bash

myvar="hello"

function myfunc()

{

    local x

    local myvar="one two three"

    for x in $myvar

    do

        echo $x

    done

}

myfunc

echo $myvar $x

 

再执行,我们发现myvar 还是“hello”,x也不存在了。

 

 

 

ps:关于带参数的函数调用: functionname parameters
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  function parameters bash