shell 编程实战–全局变量、局部变量
- 全局变量
全局变量可以在脚本中定义,也可以在某个函数中定义。在脚本中定义的变量都是全局变量,其作用域为从被定义的地方开始,一直到Shell脚本结束或者被显式地删除
如下,演示全局变量的使用方法
[root@wan day02]# vim var3.sh
#!/bin/bash
#定义函数
func()
{
#输出变量x的值
echo "$v1"
#修改变量x的值
v1=200
}
#在脚本中定义变量x
v1=100
#调用函数
func
#输出变量x的值
echo "$v1"
#调试
[root@wan day02]# chmod +x var3.sh
[root@wan day02]# ./var3.sh
100
200
[root@wan day02]# vim var4.sh +
#!/bin/bash
#定义函数
func()
{
#在函数内部定义变量
v2=200
}
#调用函数
func
#输出变量的值
echo "$v2"
[root@wan day02]# chmod +x var4.sh
[root@wan day02]# ./var4.sh
200
- 局部变量
与全局变量相比,局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部。在
Shell语言中,可以在函数内部通过local关键字定义局部变量,另外,函数的参数也是局部变量。
如下,演示使用local关键字定义局部变量
[root@wan day02]# vim var5.sh +
#!/bin/bash
#定义函数
func()
{
#使用local关键字定义局部变量
local v2=200
}
#调用函数
func
#输出变量的值
echo "$v2"
[root@wan day02]# chmod +x var5.sh
[root@wan day02]# ./var5.sh
[root@wan day02]# vim var6.sh +
#!/bin/bash
#定义函数
func()
{
#输出全局变量v1的值
echo "global variable v1 is $v1"
#定义局部变量v1
local v1=2
#输出局部变量v1的值
echo "local variable v1 is $v1"
}
#定义全局变量v1
v1=1
#调用函数
func
#输出全局变量v1的值
echo "global variable v1 is $v1"
[root@wan day02]# chmod +x var6.sh
[root@wan day02]# ./var6.sh
global variable v1 is 1
local variable v1 is 2
global variable v1 is 1
[root@wan day02]# vim var7.sh +
#!/bin/bash
#定义函数
func()
{
v1=v1
echo "global variable v1 is $v1"
#定义局部变量v1
local v1=2
#输出局部变量v1的值
echo "local variable v1 is $v1"
}
#定义全局变量v1
v1=1
#调用函数
func
#输出全局变量v1的值
echo "global variable v1 is $v1"
[root@wan day02]# chmod +x var7.sh
[root@wan day02]# ./var7.sh
global variable v1 is v1
local variable v1 is 2
global variable v1 is v1