函数调用与名称空间
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
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
相关文章推荐
- JS调用指定名称的函数
- 第二人生的源码分析(二十二)调用OpenGL显示人物名称的函数
- 验证函数调用时栈空间的变化
- 调查用户空间程序某函数最常调用路径
- 用户空间的open()是怎么调用到file_operations中提供的open函数的
- C# 利用函数名称(字符串)函数名调用对应函数(不使用委托、Action和函数指针)
- python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域(装饰器基础)
- MFC 解决因名字改变造成的函数名称不对应而调用失败的方法
- 实现基本工作空间和函数之间数据的相互调用
- 10. Python开发--函数名称空间与作用域
- C/C++:函数的调用约定(Calling Convention)和名称修饰(Decorated Name)以及两者不匹配引起的问题
- 织梦dedecms自定义功能函数(3):用mid调用会员名称或头像
- 函数对象、函数嵌套、名称空间与作用域、装饰器
- 第二人生的源码分析(二十二)调用OpenGL显示人物名称的函数
- DLL模块例2:使用__declspec(dllexport)导出函数,extern "C"规范修饰名称,隐式连接调用dll中函数
- 软件调试笔记35 - 栈和函数调用: 栈空间的增长和溢出
- javascript实现相同事件名称,不同命名空间的调用方法
- python函数的作用域和名称空间
- C语言调用WindowsAPI函数获取计算机名称
- 动态1:由函数名称调用函数