shell脚本中局部变量
来源:互联网 发布:工程设计软件培训 编辑:程序博客网 时间:2024/05/22 12:12
ref: http://blog.sina.com.cn/s/blog_683421a101013w8f.html
在shell中定义函数可以使代码模块化,便于复用代码。不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题。
(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
例1:脚本变量的作用域
#!/bin/bash
#define the function ltx_func
ltx_func()
{
}
#define the variable v1
v1=100
#call the function ltx_func
ltx_func
echo $v1
结果:
100
200
解析:脚本变量v1的作用域从被定义的地方开始,到shell结束。调用函数ltx_func的地方在变量v1的作用域内,所以能够访问并修改变量v1。
(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
例2:函数定义的global变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
}
#call the function ltx_func
ltx_func
echo $v2
结果:
200
解析:函数变量v2默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束为止。注意,不是从定义函数的地方开始,而是从调用函数的地方开始。打印命令在变量v2的作用域内,所以能够访问变量v2。
例3:函数定义的local变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
}
#call the function ltx_func
ltx_func
echo $v2
结果:
(空)
解析:函数变量v2显示定义为local的,其作用域局限于函数内。打印命令在函数外,不在变量v2的作用域内,所以能够不能访问变量v2。
例4:函数参数是local变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
}
#call the function ltx_func
ltx_func 100
结果:
param 1: 100
解析:函数参数是local的,通过位置变量来访问。打印命令输出函数的第一个参数。
(3)如果同名,Shell函数定义的local变量会屏蔽脚本定义的global变量。
例5:同名local变量屏蔽global变量
#!/bin/bash
#define the function ltx_func
ltx_func()
{
}
#define the global variable v1
v1=100
#call the function ltx_func
ltx_func
echo $v1
结果:
100
200
100
解析:global变量v1的作用域从被定义的地方开始,到shell结束。调用函数ltx_func的地方在变量v1的作用域内,所以能够变量v1。函数又定义了同名的local变量v1,同名local变量屏蔽global变量,所以函数第二次打印访问的是local变量。退出函数后再次打印v1,此时函数定义的local变量已经消失,访问的是global变量。
- shell脚本中局部变量
- shell脚本中局部变量
- shell脚本中的全局变量和局部变量
- Shell脚本中变量$
- shell中局部变量及local命令
- shell局部变量
- shell脚本中$$等变量的含义
- Shell中脚本变量的作用域
- shell脚本中变量的赋值
- shell脚本编程<一>:变量及脚本中数学计算
- shell局部变量和全局变量
- shell局部变量和全局变量
- shell局部变量和全局变量
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- Shell中脚本变量和函数变量的作用域
- 高水位线(High Water Mark)
- js格式化金额.数字. 逗号分隔 ,##.00
- python学习笔记-(6)循环遍历
- linux系统中保证不删除重要的文件
- [leetcode] @python Convert Sorted List to Binary Search Tree
- shell脚本中局部变量
- IPCamera网络摄像机与RF射频技术和红外遥控技术的结合使用
- 高仿墨迹天气下拉拉伸图片
- 借助网盘搭建SVN服务器
- 小甲鱼PE详解之区块表(节表)和区块(节)(PE详解05) IMAGE_SECTION_HEADER
- 默认加载applicationContext.xml执行两边init-method的问题(WSServletContextListener)
- 浅谈我对JCS 的理解
- 登录界面 Android简单http get请求(含服务器端)四
- [#23 leetcode]Merge k Sorted Lists